我相信我从一开始就错误地设置了我的服务工作者,现在我无法重置所有内容。我现在的问题是,用户解决问题的唯一方法是手动取消注册服务工作者和缓存文件,这不是很有帮助。我在web pack中添加了一个脚本来取消注册服务工作者并删除缓存的存储文件,但是由于捆绑文件无论如何都被用户的浏览器缓存,他们甚至看不到我对文件所做的更改,所以他们是坚持旧代码。
我已经尝试了所有我能想到的并开始耗尽资源,但似乎我不能为用户代理做很多事情,因为他们不断收到旧文件,甚至看不到这些新的变化
另外,我添加了缓存破坏,我认为可以解决这个问题,但是,它没有。
有什么建议吗?
答案 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))))
);
});