服务人员应何时自毁?

时间:2019-12-30 09:55:44

标签: javascript service-worker progressive-web-apps offline self-destruction

我发现此仓库描述了HOW to destroy a service worker。但是我没有找到任何资源描述工人何时应该销毁/卸载/注销自己。开发网站时,我经常使用端口8080。我可以在站点X上工作,该站点上有服务人员,然后在站点Y上工作,但没有服务人员,但是原来的但现在不正确的服务人员仍然存在。

服务工作者决定自行卸载的逻辑有些棘手,因为我们要:

  • 允许服务人员离线工作。
  • 允许服务人员在无线网络门户中生存。
  • 检测浏览器是否在线,但是此站点上不应有服务人员,或者该服务人员应为其他人。

是否存在与此相关的标准机制或约定?

2 个答案:

答案 0 :(得分:3)

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

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

他们有几种解决此特定问题的方法:

第一个方法是为您在/etc/hosts中开发的每个网站设置别名。

127.0.0.1  local.site-a.com
127.0.0.1  local.site-b.com

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

最后一个选择是在每个没有服务工作者的项目中包括您在问题中链接的代码。尽管您会采用这种方法,但理想情况下您需要使您的构建过程仅将其包括在Dev构建中。

答案 1 :(得分:0)

您必须在serviceworker中注册一个javascript文件,该文件在运行javascript文件之前会检查站点X的本地路径。

navigator.serviceWorker.register('/checking.js').then(function(registration) {
  // Registration was successful
  }

在checking.js中

if(window.location.href == "YOUR X SITE FILE PATH"){
 //Run the javascript file which you have created for site X 
}

在生产过程中,请记住必须将serviceWorker()的参数更改为各自的js文件