渐进式 Web 应用程序是否需要 Service Worker?

sim*_*ast 8 javascript progressive-web-apps

并非所有浏览器都支持Service Worker ;caniuse 估计它们适用于大约 85% 的用户。

如果我构建了一个 PWA,它需要使用 Service Worker 吗?

Leo*_*Leo 2

根据我的经验,服务人员并不强制提供具有离线功能的 PWA。

只要您的 PWA 页面被正确标记为可缓存,您就可以完全离线运行 PWA,并且如果页面的生命周期在浏览器缓存生命周期内,则不需要连接到服务器。Chrome 的“创建快捷方式”功能是由 webmanifest 驱动的,而不是由它使用 Service Worker 的事实驱动的。如果页面有清单,您可以为该页面创建桌面快捷方式。

此外,您还可以对绝对未缓存的 URL 进行 AJAX 调用,以确定您是离线运行还是在线运行,并更新页面(如果“更新”URL 告诉您这样做),方法是使用location.reload()

更新:Chrome 和 MS Edge需要服务人员控制页面,以便在地址栏中为 PWA 提供“安装”按钮。

边缘安装按钮 Chrome 安装按钮,

另请参阅此处 渐进式网络应用程序不在浏览器栏中显示安装按钮

然而,所需的服务工作人员可以非常基本,并利用浏览器内置缓存:无需使用服务工作人员缓存。
为了更好地了解其在实践中的工作原理,我创建了一个小型 github 项目,可在https://github.com/leopatras/simple_offline_pwa上查看。

该页面可以在https://www.generomobile.de/gmi/simple_offline_pwa/test.html上实时查看