0

我相信我从一开始就错误地设置了我的服务人员,现在我无法重置所有内容。我现在的问题是用户解决问题的唯一方法是手动取消注册服务工作者和缓存文件,这不是很有帮助。我在 webpack 中添加了一个脚本来取消注册服务工作者并删除缓存的存储文件,但是由于捆绑文件无论如何都被用户的浏览器缓存,他们甚至看不到我对文件所做的更改,所以他们是坚持旧代码。

我已经尝试了我能想到的一切并开始耗尽资源,但似乎我不能为用户代理做很多事情,因为他们一直在接收旧文件,甚至看不到这些新的变化。

另外,我添加了缓存破坏,我认为它可以解决这个问题,但是,它没有。

有什么建议么?

4

1 回答 1

0

取消注册您的服务人员应该是不必要的。您应该能够只部署一个新的软件,并且您的用户将开始得到它。

请参阅有关 SW 更新的此答案。基本上,只要用户访问您的网站,如果浏览器的当前版本是 24 小时前,就会重新获取 SW。

在新版本的 SW 中,更改prefixorsuffix和工作框将切换到新的缓存并忽略所有现有的缓存资产。

您可能还想使用以下内容清理旧缓存:

const suffix = 'v1';
self.addEventListener('activate', function(event) {
  event.waitUntil(
    caches.keys()
      .then(keys => keys.filter(key => !key.endsWith(suffix)))
      .then(keys => Promise.all(keys.map(key => caches.delete(key))))
  );
});
于 2018-04-08T17:31:49.227 回答