我遇到Workbox的问题,除非更改文件内容,否则我的网站不会更新,除非我在浏览器中手动清除了存储/站点数据。
自从今年v4发布以来,我代码中的cleanupOutdatedCaches应该可以解决这个问题,但是问题仍然存在。
我创建了this website来举例说明。一旦访问它,Workbox将安装服务工作者,但是如果我将test1
更改为test2
,则除非更改了浏览器中的站点数据,否则您将看不到更改。刷新。
我也只尝试注销sw;它显示了更新的版本(test2),但是刷新两次后,它又返回到旧版本(test1)。
您可以在GitHub here中查看网站的代码。
预先感谢,
路易斯。
答案 0 :(得分:1)
cleanOutdatedCaches 将仅清除由旧版工作箱库创建的缓存。在这种情况下,由于您使用的是同一版本的工作箱,因此对该方法的调用不会执行任何操作。
Workbox预先缓存了特定文件后,它将永远不会尝试从网络中检索该文件,除非您在 precacheAndRoute 调用中指定的修订版本与先前缓存的版本不同。< / p>
由于您更改了index.html,但未更改 precacheAndRoute 中的修订,因此工作箱假定该文件未更改。因此,您需要做的是使用对应于新版本index.html
的新哈希值更新 precacheAndRoute您可以通过使用injectManifest来实现 https://developers.google.com/web/tools/workbox/modules/workbox-build
或您使用的任何其他构建工具。
编辑:
您也可以通过编程方式调用skipWaiting https://developers.google.com/web/tools/workbox/modules/workbox-core#skip_waiting_and_clients_claim
但是您必须谨慎使用它。这是一种实现方法: https://developers.google.com/web/tools/workbox/guides/advanced-recipes