我正在使用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
错误。请帮助我找到解决方案。
谢谢。