我发现此仓库描述了HOW to destroy a service worker。但是我没有找到任何资源描述工人何时应该销毁/卸载/注销自己。开发网站时,我经常使用端口8080。我可以在站点X上工作,该站点上有服务人员,然后在站点Y上工作,但没有服务人员,但是原来的但现在不正确的服务人员仍然存在。
服务工作者决定自行卸载的逻辑有些棘手,因为我们要:
是否存在与此相关的标准机制或约定?
答案 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文件