我正在使用下面的代码清除由工作箱创建的缓存,但是它也会删除由自己工作箱管理的预缓存。
请告诉我是否存在更好的方法。
// Clean up caches in activate event to ensure no pages are using the old caches.
self.addEventListener('activate', (event) => {
const promiseChain = caches.keys()
.then((cacheNames) => {
// Step through each cache name and delete it
return Promise.all(
cacheNames.map((cacheName) => caches.delete(cacheName))
);
});
// Keep the service worker alive until all caches are deleted.
event.waitUntil(promiseChain);
});
下面的代码可以很好地删除其他缓存,同时将预缓存保留在工作盒服务工作程序中。
// Clear old caches
var clearOldCaches = function (event)
{
event.waitUntil(
caches.keys().then(function (cacheNames) {
let validCacheSet = new Set(Object.values(workbox.core.cacheNames));
return Promise.all(
cacheNames
.filter(function (cacheName) {
return !validCacheSet.has(cacheName);
})
.map(function (cacheName) {
return caches.delete(cacheName);
})
);
})
);
};
self.addEventListener("activate", function (event) {
clearOldCaches(event);
});