caches.match()始终返回未定义

时间:2020-07-17 07:33:43

标签: javascript caching progressive-web-apps service-worker

我正在使用PWA实施缓存优先策略。在这种情况下,由于未定义来自caches的响应,因此event.respondWith()中的caches.match()始终为空。

serviceworker.js

const staticCacheName = 'site-static-v2';
const assets = [...];

//install event
self.addEventListener('install', (event) => {
  event.waitUntil(
    caches.open(staticCacheName).then((cache) => {
        console.log('caching shell assets');
        for(let asset of assets){
          cache.add(asset);
        }
        return true;
    })
    .catch(err => console.log(err))
  );
});

//fetch event with cache first strategy
self.addEventListener('fetch', (event) => {
    event.respondWith(
        caches.match(event.request)
        .then(response => {
            console.log(caches);   //CacheStorage {} in console
            console.log(response); //undefined
            return response || fetch(event.request);
        })
    );
});

我没有activate事件来删除缓存的链接。因此,site-static-v2不为空。 我尝试了cache.match()并抛出ReferenceError: cache is not defined错误。请帮助我找到解决方案。 谢谢。

0 个答案:

没有答案