Service Worker 什么时候应该自毁?

ube*_*kel 7 javascript offline self-destruction service-worker progressive-web-apps

我发现这个 repo 描述了如何销毁 service worker。但是我没有找到任何描述工人何时应该销毁/卸载/取消注册自己的资源。

当我开发网站时,我经常使用端口 8080。我可以在有 Service Worker 的站点 X 上工作,然后在没有 Service Worker 的站点 Y 上工作,但原来的和现在不正确的 Service Worker 仍然存在。

Service Worker 决定自行卸载的逻辑有点棘手,因为我们想要:

  • 允许 Service Worker 离线工作。
  • 允许 Service Worker 在强制 wifi 门户中幸存下来。
  • 检测浏览器在线但该站点不应该有 Service Worker,或者 Service Worker 应该是不同的。

是否有围绕此的标准机制或约定?

Dav*_*haw 4

简单的答案是,通常它永远不会自我毁灭。

这对您来说似乎是一个问题,因为您正在开发多个站点,然后将它们全部测试为localhost:8080.

有几种方法可以解决这个特定问题:

第一个是为您开发的每个站点设置别名/etc/hosts

127.0.0.1  local.site-a.com
127.0.0.1  local.site-b.com
Run Code Online (Sandbox Code Playgroud)

另一种选择是在测试时将每个项目配置为在不同的端口上运行。

最后一个选项是在每个没有 Service Worker 的项目中包含您在问题中链接到的代码。尽管这种方法您理想情况下需要使您的构建过程仅将其包含在开发构建中。