如何阻止年长的服务人员?
How to stop older service workers?
下图显示安装了两个 worker - 一个处于活动状态,另一个不处于活动状态(刚刚安装)。
- 注册服务工作者
- 更改
service-worker.js
并重新加载页面。
- 逻辑是服务工作者检查二进制差异并更新工作者的版本。
因此生成了一个新的服务工作者,并使用了新的版本 ID。但是为什么旧的保留 运行 ?以及如何关闭它?
sw.js
在这里https://gist.github.com/boopathi/57b7e8b6d657d55bdc7d
默认情况下,直到所有具有由该旧服务人员控制的页面的选项卡 closed/unloaded,旧服务人员将保持 运行。新的 service worker 将 "wait" 处于 "waiting" 状态。
有一些选项可以更改此默认行为。他们是 skipWaiting()
and clients.claim()
.
当从正在安装的 Service Worker 调用 skipWaiting()
时,它会跳过 "waiting" 状态并立即激活。然而,尽管被激活,它不一定会控制页面——这就是 clients.claim()
将要完成的。
下图显示安装了两个 worker - 一个处于活动状态,另一个不处于活动状态(刚刚安装)。
- 注册服务工作者
- 更改
service-worker.js
并重新加载页面。 - 逻辑是服务工作者检查二进制差异并更新工作者的版本。
因此生成了一个新的服务工作者,并使用了新的版本 ID。但是为什么旧的保留 运行 ?以及如何关闭它?
sw.js
在这里https://gist.github.com/boopathi/57b7e8b6d657d55bdc7d
默认情况下,直到所有具有由该旧服务人员控制的页面的选项卡 closed/unloaded,旧服务人员将保持 运行。新的 service worker 将 "wait" 处于 "waiting" 状态。
有一些选项可以更改此默认行为。他们是 skipWaiting()
and clients.claim()
.
当从正在安装的 Service Worker 调用 skipWaiting()
时,它会跳过 "waiting" 状态并立即激活。然而,尽管被激活,它不一定会控制页面——这就是 clients.claim()
将要完成的。