如何更新 Service Worker?

Rai*_*ain 5 javascript browser browser-cache service-worker

情况:

在 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

Jef*_*ick 6

您所描述的——检查更新——/service-worker.js本文所述的情况下默认自动发生:

如果发生以下任何一种情况,将触发更新:

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

所有现代 Web 浏览器都会忽略Cache-Control/service-worker.js默认设置的任何标头,并直接针对 Web 服务器获取最新副本。

如果您希望它的行为类似于“终止开关”,则此Stack Overflow 答案针对修订后的service-worker.js文件应包含的内容提供了一些最佳实践。