3 回答

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊
您的代碼看起來已經(jīng)不錯(cuò)了。就我而言,我使用以下代碼刪除 SW 緩存:
if ('caches' in window) {
caches.keys().then(cacheNames => {
return Promise.all(
cacheNames.filter(cacheName => {
// You can have some custom logic here, if you want
// to delete only some caches
// If you return TRUE, the cache will be deleted
}).map(cacheName => {
return caches.delete(cacheName);
})
);
})
}
該caches.keys()方法返回 CacheStorage 的鍵,該接口表示 Service Worker 可以訪問的 Cache 對(duì)象的存儲(chǔ)。

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊
試試這個(gè):
self.addEventListener( "activate", event => {
event.waitUntil(
//wholesale purge of previous version caches
caches.keys().then( cacheNames => {
cacheNames.forEach( value => {
caches.delete( value );
} );
} );
} );

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊
不是專家,但我認(rèn)為使用這樣的過濾器會(huì)起作用。
cacheNames.filter(cacheName => {
if (cacheWhitelist.indexOf(cacheName) === -1) {
return caches.delete(cacheName);
}
添加回答
舉報(bào)