如何更新 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


慕标5832272
浏览 449回答 2
2回答

杨__羊羊

您所描述的——检查更新——/service-worker.js在本文所述的情况下默认自动发生:如果发生以下任一情况,将触发更新:到范围内页面的导航。推送和同步等功能事件,除非在过去 24 小时内进行了更新检查。.register()仅在 Service Worker URL 已更改时调用。但是,您应该避免更改工作程序 URL。所有现代 Web 浏览器都会忽略Cache-Control您/service-worker.js默认设置的任何标头,并直接针对 Web 服务器获取最新副本。如果您希望它的行为类似于“终止开关”,则此Stack Overflow 答案针对修订后的service-worker.js文件应包含的内容提供了一些最佳实践。

ITMISS

只需像这样将 ?v=1 添加到您的脚本中。navigator.serviceWorker.register('/service-worker.js?v=1', {scope: "/"});并在更改 Service Worker 的脚本时增加脚本版本的数量
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript