【问题标题】:How to stop older service workers?如何阻止年长的服务人员?
【发布时间】:2015-01-21 14:09:32
【问题描述】:

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

  1. 注册服务人员
  2. 更改service-worker.js 并重新加载页面。
  3. 逻辑是服务工作者检查二进制差异并更新工作者的版本。

因此,使用新版本 ID 生成了一个新的 Service Worker。但是为什么旧的一直在运行?以及如何关闭它?

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

【问题讨论】:

    标签: service-worker


    【解决方案1】:

    默认情况下,在关闭/卸载该旧 Service Worker 控制的页面的所有选项卡之前,旧 Service Worker 将继续运行。新的 Service Worker 将在“等待”状态下“等待”。

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

    skipWaiting() 从正在安装的 Service Worker 中调用时,它会跳过“等待”状态并立即激活。然而,尽管被激活,它不一定会控制页面——这就是clients.claim() 将完成的事情。

    【讨论】:

    • skipWaiting()clients.claim() 似乎不会触发 controllerchange 事件。我目前正在观看关于 SW - classroom.udacity.com/courses/ud899 的课程,我发现目前唯一的选择是离开页面然后回来。 SkipWaiting 对我不起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    相关资源
    最近更新 更多