如何从 Service Worker 中删除多个打开的缓存

我一直在研究 pwa 项目,我打开了两个缓存,一个是静态缓存,另一个是动态缓存,我可以使用此代码一次删除一个缓存


self.addEventListener('activate', event => {

  console.log('Activating new service worker...');


  const cacheWhitelist = [staticCacheName];


  event.waitUntil(

    caches.keys().then(cacheNames => {

      return Promise.all(

        cacheNames.map(cacheName => {

          if (cacheWhitelist.indexOf(cacheName) === -1) {

            return caches.delete(cacheName);

          }

        })

      );

    })

  );

});

我想同时删除两个缓存


拉风的咖菲猫
浏览 321回答 3
3回答

慕桂英546537

您的代码看起来已经不错了。就我而言,我使用以下代码删除 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 对象的存储。

智慧大石

试试这个:self.addEventListener( "activate", event => {  event.waitUntil(    //wholesale purge of previous version caches    caches.keys().then( cacheNames => {      cacheNames.forEach( value => {          caches.delete( value );      } );    } );} );

元芳怎么了

不是专家,但我认为使用这样的过滤器会起作用。 cacheNames.filter(cacheName => {          if (cacheWhitelist.indexOf(cacheName) === -1) {            return caches.delete(cacheName);          }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript