Workbox无法更新用户以前缓存的数据

时间:2018-04-06 06:10:00

标签: node.js reactjs webpack workbox

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

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

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

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

取消注册服务工作者应该是不必要的。您应该能够部署一个新的SW,您的用户将会开始这样做。

有关SW更新的信息,请参阅this answer。基本上,只要用户访问您的网站,如果浏览器的当前版本是24小时,则会获取新的SW。

在新版本的SW中,更改prefix or suffix,工作箱将切换到新缓存并忽略所有现有缓存资源。

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

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))))
  );
});