情况:
在 mywebsite.com/game 上,我注册了一个 service-worker
navigator.serviceWorker.register('/service-worker.js', {scope: "/"});
在我的服务器上,
'/service-worker.js'
的 maxAge 为 1d
。
问题:
service-worker.js
有一个重大错误。它总是显示一个空页面并且无法获取任何内容。 service-worker.js
必须改变。
问题是每当用户转到
mywebsite.com/game
时,它都会显示空白页面并且不执行任何其他操作。我无法让客户端获取新的 service-worker.js
。
如何让客户端获取新的
service-worker.js
?
您所描述的内容 - 检查
/service-worker.js
的更新 - 默认情况下会自动发生,在本文中列出的情况下:
如果发生以下任一情况,则会触发更新:
- 导航至范围内页面。
- 推送和同步等功能事件,除非在过去 24 小时内进行过更新检查。
- 仅当 Service Worker URL 发生更改时才调用
。但是,您应该避免更改工作 URL。.register()
所有现代网络浏览器都会默认忽略您在
Cache-Control
上设置的任何/service-worker.js
标头,并直接访问网络服务器以获取最新副本。
这个 Stack Overflow 答案 对于修订后的
service-worker.js
文件应该包含的内容有一些最佳实践,如果您希望它表现得像“终止开关”。
只需将 ?v=1 添加到您的脚本中即可。
navigator.serviceWorker.register('/service-worker.js?v=1', {scope: "/"});
并在更改 Service Worker 脚本时增加脚本版本号
关闭页面并再次打开。 来源
接受的答案没有提供任何可行的解决方案。