如何更新 Service Worker?

问题描述 投票:0回答:3

情况:

在 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

javascript browser service-worker browser-cache
3个回答
15
投票

您所描述的内容 - 检查

/service-worker.js
的更新 - 默认情况下会自动发生,在本文中列出的情况下:

如果发生以下任一情况,则会触发更新:

  • 导航至范围内页面。
  • 推送和同步等功能事件,除非在过去 24 小时内进行过更新检查。
  • 仅当 Service Worker URL 发生更改时才调用
    .register()
    。但是,您应该避免更改工作 URL。

所有现代网络浏览器都会默认忽略您在

Cache-Control
上设置的任何/service-worker.js
标头
,并直接访问网络服务器以获取最新副本。

这个 Stack Overflow 答案 对于修订后的

service-worker.js
文件应该包含的内容有一些最佳实践,如果您希望它表现得像“终止开关”。


0
投票

只需将 ?v=1 添加到您的脚本中即可。

navigator.serviceWorker.register('/service-worker.js?v=1', {scope: "/"});

并在更改 Service Worker 脚本时增加脚本版本号


0
投票

关闭页面并再次打开。 来源

接受的答案没有提供任何可行的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.