我想在我的网站上使用两个服务工作者:一个用于为我的PWA提供经典的脱机缓存(/sw.js
),另一个用于提供本地数据库"服务器&#34之类的东西;它使用后台同步和推送(/sw-db.js
)。由于后者倾向于做繁重的工作(阻止事件循环几毫秒),最好将它分开。
由于数据库sw不用于获取请求,我会给它一个虚拟范围,而sw.js
的范围是整个域。
第一个响应" fetch"事件,还提供/sw-db.js
的代码/ URL(保持有点与网站更新同步)或服务工作者始终通过网络更新。
答案 0 :(得分:1)
当您需要检查更新时,将始终绕过任何其他服务工作人员提取您传递到%timeit
的{{1}}脚本网址。因此,要回答您的问题,将不会触发其他服务工作者的%timeit
处理程序。
HTTP cache does come into play。因此,您应该确保为您的用例设置正确的HTTP缓存控制标头。
通常,由于导航到由服务工作者控制的页面而触发服务工作者更新检查,但如果您的服务工作者具有“虚拟”范围,则它不会最终控制任何页面。话虽这么说,当服务工作者处理sw.js
或navigatior.serviceWorker.register('/path/to/sw.js')
事件时,您最终也会触发更新检查。我不确定每个fetch
或sync
是否会触发检查,或仅触发其中的一部分,例如导致新服务工作者生成的检查。但它至少会在某些时候发生。