我认为为服务工作者使用缓存清除功能是一个坏主意,方法是在其文件名中添加版本字符串。在任何教程中都没有提到这一点,我也从未在野外看到这种方法。
您应该在服务工作者文件的响应标头中使用no-cache
directive和max-age
field。
但是,由于我没有找到有关此方法的专用声明,因此我尝试了一下,似乎如果更改Service Worker文件,则很难摆脱旧文件。因此,我可以在dev-tools的 sources 标签中看到这两个文件。
但是您不会立即在 application 选项卡中看到新的服务工作者,所以我不确定是什么阻碍了新SW的掌控以及它实际上正在等待什么。
有人知道,浏览器通常如何处理这种情况?
答案 0 :(得分:1)
Here's some guidance建议为什么应避免这种情况:
避免更改您的服务工作者脚本的URL
如果您已经read my post 缓存最佳做法,您可以考虑提供每个版本的 服务工作者唯一的URL。不要这样!这通常很糟糕 服务人员的实践,只需更新当前脚本 位置。
它可以使您陷入这样的问题:
- index.html将sw-v1.js注册为服务工作者。
- sw-v1.js缓存并提供index.html,因此它首先离线运行。
- 您更新index.html,以便它注册新的闪亮的sw-v2.js。
如果执行上述操作,则用户永远不会获得sw-v2.js,因为sw-v1.js是 从缓存中提供旧版本的index.html。你放了 使自己处于需要更新服务人员的位置 为了更新您的服务人员。真是