当前位置:  开发笔记 > 编程语言 > 正文

当有多个服务工作者时,Navigator.serviceWorker如何解决?

如何解决《当有多个服务工作者时,Navigator.serviceWorker如何解决?》经验,为你挑选了1个好方法。

我一直在检查网络的推送通知,并且遇到了以下代码段

navigator.serviceWorker

如果有多个服务工作者,这如何解决?它是否返回最后一个注册的服务工作者?

关于这个文档,我的文档并不是很清楚.



1> Jeff Posnick..:

Jake Archibald的" 服务工作者生命周期 "是一个很棒的资源,如果您还没有阅读它,我建议您这样做.

每个服务工作者都有自己的范围.默认情况下,在最宽松的范围内,范围与提供服务工作者脚本的目录相同.如果需要,您可以在呼叫时传入更严格的范围navigator.serviceWorker.register().

可以为给定的来源注册具有不同范围的多个服务工作者.(旁白:如果您尝试为给定来源注册具有相同范围的多个服务工作者,即使服务工作者具有不同的URL,后续注册也将被视为服务工作者更新,而不是单独的注册.)

如果注册了多个服务工作者,那么为了确定哪个服务工作者控制给予客户端页面,将检查范围.注册范围最具体的服务工作者,即最长的匹配范围,是控制给定客户端页面的服务工作者.

因此,例如,给定以下两个具有相应范围的服务工作者注册:

SW 1:,/path/to/sw.js注册范围/path/to/

SW 2:,/path/to/subdir/sw.js注册范围/path/to/subdir/

如果客户端页面的URL是/path/to/index.html,则SW 1将控制客户端,因为/path/to/是最长的匹配范围.

如果客户端页面的URL是/path/to/subdir/index.html,则SW 2将控制客户端.即使SW 1的范围匹配,SW 2的范围也匹配,而SW 2的范围更具体/更长.

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有