微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 JavaScript 中将兑现的文件重新加载到浏览器 serviceWorker

如何解决在 JavaScript 中将兑现的文件重新加载到浏览器 serviceWorker

每次我编辑 PWA 应用程序源时,如 html 或 js 文件,我都必须手动删除浏览器缓存文件和历史记录,以便加载我上传的新数据。 我的 serviceWorker 例程尝试仅缓存我的主 url html,但似乎所有文件都被自动缓存。 这是我的 serviceWorker 文件

    var cacheName = 'app-pwa';
    var filesToCache = [
      '/','/index.html'
    ];

    /* Start the service worker and cache all of the app's content */
   self.addEventListener('install',function(e) {
     e.waitUntil(
       caches.open(cacheName).then(function(cache) {
         return cache.addAll(filesToCache);
       })
     );
   });

   /* Serve cached content when offline */
   self.addEventListener('fetch',function(e) {
     e.respondWith(
       caches.match(e.request).then(function(response) {
         return response || fetch(e.request);
       })
     );
    });

那么任何人都可以帮助我如何刷新浏览器中的缓存文件? 谢谢

解决方法

好,我找到了自己的方式和将分享在这里的人谁需要它。 方式是在缓存文件名的末尾定义版本:

var cacheName = 'app-pwa-v1';

并为任何更新增加版本。并定义另一个 Service Worker 来删除之前缓存的文件。

self.addEventListener('activate',(e) => {
  e.waitUntil(caches.keys().then((keyList) => {
    Promise.all(keyList.map((key) => {
      if (key === cacheName) { return; }
      caches.delete(key);
    }))
  })));
});

这将在第二次应用启动后删除旧的缓存文件。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。