如何阻止老年服务工作者?

时间:2015-01-21 14:09:32

标签: service-worker

下图显示安装了两个工作人员 - 一个处于活动状态,另一个未处于活动状态(刚刚安装)。

two service workers running

  1. 注册服务工作者
  2. service-worker.js进行更改并重新加载页面。
  3. 逻辑是Service Workers检查二进制差异并更新worker的版本。
  4. 因此,使用新版本ID生成新的服务工作者。但为什么旧的一直在运行?以及如何关闭它?

    sw.js在这里https://gist.github.com/boopathi/57b7e8b6d657d55bdc7d

1 个答案:

答案 0 :(得分:11)

默认情况下,在关闭/卸载由旧服务工作者控制页面的所有选项卡之前,旧服务工作程序将保持运行。新的服务工作者将会等待"等等。在"等待"状态。

有些选项可以更改此默认行为。他们是skipWaiting()clients.claim()

从安装服务工作者调用skipWaiting()时,它会跳过"等待"状态并立即激活。但是,即使被激活,它也不一定会控制页面 - clients.claim()将完成的任务。