Angular 不支持的浏览器上的 Service Worker

Angular Service Worker on the browsers that do not support it

Angular 团队做得很好,在版本 5 中引入了 service workers 支持。documentation 非常有帮助,在阅读相关文章后我真的可以看到这些东西是如何工作的,但是这里没有涵盖一个主题。这一切在不支持服务工作者的浏览器中如何工作。

内容如下:

Your application must run in a web browser that supports service workers. Currently, the latest versions of Chrome and Firefox are supported. To learn about other browsers that are service worker ready, see the Can I Use page.

Can I Use 显示 quite a poor support 在相对重要的浏览器中的功能。我可以在无法正常工作的 IE11 中幸存下来,但我不想让 Safari(尤其是移动设备)不受支持。

所以,我的目的是了解 angular 服务工作者模块、服务、这些服务提供的事件等在 支持的浏览器上的行为服务人员。

会不会都默默的失败了?无论如何都会触发事件吗? ngsw-worker.js 会被要求吗?某些东西会缓存在 IndexedDB 而不是 service worker 中吗?

该解决方案看起来很酷,但是我无法回答问题 我应该使用它吗?,直到我知道上述问题的答案。

基本上不支持服务工作者的浏览器会默默地失败。因此,后台连接到 SW 的任何内容(例如离线缓存和推送通知)都将不起作用。该网站仍将像任何其他网站一样工作,只是 PWA 的功能和特性不会。

The official response

Angular 软件仅适用于支持服务工作者的浏览器。这包括所有应用程序集成(例如 SwUpdate 服务)。

如果当前浏览器不支持软件。

  • 永远不会下载 SW 脚本和 ngsw.json。
  • 主动尝试与 SW 交互,例如调用 -
  • SwUpdate.checkForUpdate() 将 return 拒绝承诺。
  • 被动尝试监听诸如 SwUpdate.available 之类的 SW Observables 将永远不会触发 - Observables 永远不会发出。