如何更新服务人员?

How to update service workers?

情况:

在我的网站上。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 的更新 - 在 this article:

中规定的情况下默认自动发生

An update is triggered if any of the following happens:

  • A navigation to an in-scope page.
  • A functional events such as push and sync, unless there's been an update check within the previous 24 hours.
  • Calling .register() only if the service worker URL has changed. However, you should avoid changing the worker URL.

您在 /service-worker.js 默认设置的所有现代网络浏览器 will ignore any Cache-Control headers 直接访问网络服务器以获取最新副本。

提供了一些最佳实践,用于说明修订后的 service-worker.js 文件应包含的内容,如果您希望它的行为类似于 "kill switch."

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

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

并在更改 service worker 脚本时增加脚本版本号