我正在使用 sw-precache 通过 Polymer CLI 构建过程生成我的服务工作,因此它旨在更新更新文件的哈希值以表示需要更新缓存。但是我更新的内容并没有在缓存中被替换,所以如果我用 ctrl+r 刷新它会得到一个旧版本但是如果我用 ctrl+shift+r 刷新它会得到新版本。一个原因可能是我的 service worker 没有更新。
该文档 指出
如果 service worker 文件与其当前的文件相比即使有一个字节的差异,它也会认为它是新的。
,但是如果我的新 service worker 没有改变一个字节怎么办? (如果只有一个哈希发生变化,就会发生这种情况)。如何配置 sw-precache 以在每次新请求时更新服务工作?
原文由 Jp_ 发布,翻译遵循 CC BY-SA 4.0 许可协议
正如前面的答案所述,浏览器有 1 天(24 小时)的内置限制来查找 service worker 的更新,但您需要注意的是您仍然需要调用
.update()
在你的ServiceWorkerRegistration
对象上,否则将使用文件的原始版本。在 Chrome 中测试更改时,我总是在处理我的服务工作者脚本时右键单击刷新按钮并选择“清空缓存和硬重置”(当开发人员工具打开时选项可用)。