javascript - 同时有两个 service worker

标签 javascript service-worker progressive-web-apps

我想在我的网站上使用两个服务 worker :一个为我的 PWA 提供经典的离线缓存 (/sw.js),另一个为本地数据库“服务器”之类的东西提供服务它使用后台同步和推送 (/sw-db.js)。由于后者往往会做繁重的工作(阻塞事件循环几毫秒),所以最好将其分开。

由于数据库 sw 不用于获取请求,我会给它一个虚拟范围,而 sw.js 的范围是整个域。

第一个响应“获取”事件,是否也为 /sw-db.js 提供代码/URL(使其有点与站点更新)或者服务人员总是通过网络更新。

最佳答案

您传递给 navigatior.serviceWorker.register('/path/to/sw.js')sw.js 脚本 URL 将始终被绕过需要检查更新时的任何其他服务人员。因此,为了回答您的问题,不会触发其他服务人员的 fetch 处理程序。

HTTP cache does come into play每当有服务 worker 脚本的更新检查时。因此,您应该确保为您的用例设置正确的 HTTP 缓存控制 header 。

通常,服务 worker 更新检查是由于导航到由服务 worker 控制的页面而触发的,但如果您有一个具有“虚拟”范围的服务 worker ,它最终不会控制任何页面。也就是说,当服务 worker 处理 syncpush 事件时,您最终也会触发更新检查。我不确定是否每个 syncpush 都会触发检查,或者只是其中的一个子集,例如导致新服务 worker 产生的那些。但它至少在某些时候会发生。

关于javascript - 同时有两个 service worker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41758968/

相关文章:

javascript - iOS 13+ 设备的网络音频音量衰减

javascript - 当鼠标悬停(悬停)在对象上时,鼠标光标应该改变(three.js)

javascript - Service Worker 可以获取和缓存跨源 Assets 吗?

javascript - 通过 service-worker 的请求完成了两次

javascript - 短期响应缓存中的 XHR 调用

fingerprint - 如何在 WebApp 中实现指纹扫描仪?

javascript - 按回车键时AngularJS表单不提交

javascript - 我应该学习哪种网络技术?

javascript - 如何并排展开和折叠三个div?

javascript - Angular7:服务 worker 未按预期运行