如果开发工具未打开,Workbox不会删除缓存

问题描述

即使有新版本,浏览器上的缓存也不会删除

我的registerSW.js:

async function registerSW() {
    if ('serviceWorker' in navigator) {
        try {
            await navigator.serviceWorker.register('/sw.js');
        } catch (e) {
            alert('ServiceWorker registration Failed. Sorry about that.');
            console.log(e);
        }
    } else {
        document.querySelector('.alert').removeAttribute('hidden');
    }
}

if ('serviceWorker' in navigator) {
    window.addEventListener('load',e => {
        registerSW();
    });
}   

sw.js:

myCacheVer = 'v-01';
myCache = 'appname-' + myCacheVer;

if (workBox) {
  console.log('[ServiceWorker] Activate');
  caches.keys().then(function (keyList) {
    return Promise.all(keyList.map(function (key) {
      if (!key.includes(myCacheVer)) {
        console.log('[ServiceWorker] User - Removing old cache',key);
        return caches.delete(key);
      }
    }));
  })

workBox.setConfig({
    clientsClaim: true,debug: true,skipwaiting: true
  });
  workBox.core.setLogLevel(workBox.core.LOG_LEVELS.warn);
  . . . .

如果更改版本号,WorkBox仍将使用旧版本(例如,创建新的缓存数据等)。如果我打开“开发工具”>“应用程序”,然后单击一个链接,那是WorkBox创建新缓存并删除旧缓存的时间。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)