在不支持Angular服务工作者的浏览器上实现服务工作者。

4
Angular团队在版本5中做了出色的工作,并引入了服务工作者支持。文档非常有帮助,阅读相关文章后我确实能看到事情将如何运作,但是有一个主题没有涉及。在不支持服务工作者的浏览器中,这一切是如何运作的。

以下是所说的内容:

您的应用程序必须在支持服务工作者的Web浏览器中运行。目前,最新版本的Chrome和Firefox得到支持。要了解其他支持服务工作者的浏览器,请参见Can I Use页面。

Can I Use显示相对重要的浏览器功能支持很差。我可以忍受IE11不工作,但Safari(尤其是移动设备)是我不想支持的东西。

因此,我的意图是了解在不支持服务工作者的浏览器上,angular服务工作者模块、服务、它们提供的事件等将如何表现。

所有这些都只是静默失败吗?事件是否仍会被触发?是否会请求ngsw-worker.js?是否会将某些内容缓存到IndexedDB而不是服务工作者中?

这个解决方案看起来很酷,但在我知道以上问题的答案之前,我无法回答“我应该使用它吗?”这个问题。

2个回答

4

官方回应

Angular SW 只能在支持 service workers 的浏览器中运行。这包括所有的应用集成(例如 SwUpdate 服务)。

如果当前浏览器不支持 SW,则:

  • SW 脚本和 ngsw.json 将永远不会被下载。
  • 主动尝试与 SW 交互,例如调用 SwUpdate.checkForUpdate(),将返回拒绝的 Promise。
  • 被动尝试监听 SW Observable,例如 SwUpdate.available,将永远不会触发 - 这些 Observables 将永远不会发出信号。

2

基本上,不支持服务工作者的浏览器将会默默失败。因此,与SW相关的后台内容,如离线缓存和推送通知将无法使用。该网站仍将像其他网站一样工作,只是PWA的功能和特性将不可用。


你有任何证据吗? - smnbbrv
1
在这里玩弄元素和其他渐进式Web应用PWAs。 在iOS设备上打开以查看效果。对于“元素”,它具有离线缓存功能。在Android上,它应该可以离线工作。在iOS设备上,它将什么也不显示。 - oninross
这个很不错,但是有两点需要注意:1. 如果我想尝试某些东西,我早就已经做过了... 2. 它听起来并不具备未来的可靠性,因为它没有得到 Angular 团队的确认... - smnbbrv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接