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

8

服务工作者不被所有浏览器支持;caniuse估计它们可以为大约85%的用户工作。

如果我构建了一个PWA,它是否需要使用服务工作者?


1
渐进式网络应用程序不是由严格的标准定义的,而是由一组指南定义的。这些指南有时会概述特定的技术;例如“网站通过HTTPS提供服务”,而其他指南(如“所有应用程序URL在脱机加载时都能使用”)则仅是应用程序行为的建议。您看过PWA清单吗?https://developers.google.com/web/progressive-web-apps/checklist - OliverRadini
据我所知,我不是PWA的专家,服务工作管理缓存,使您的应用程序可以离线工作。您可能可以在没有它的情况下制作PWA,但那就不是真正的PWA了。有一个Vue的包可以使您的应用程序成为PWA。尝试一下没有服务工作者,并转到Chrome开发工具,然后进行审核并运行检查。 - Mladen Skrbic
非常感谢!我会学习更多关于渐进式Web应用程序,并找出我将遇到的真正问题。 - simplast
85%是非常高的。你可能会遇到appcache,这是以前实现离线缓存应用程序的方式,但即使如此,它也只有93%的用户使用。使用服务工作者,你真正需要担心的只有IE 11及更早版本和从未升级的用户。 - William Walseth
1
这应该是可选的,但 Chrome 和压制性的 Lighthouse 要求你不仅要有一个 Service Worker,而且它还必须用于缓存,否则你将无法获得“请求安装”功能 :-( - McMurphy
现在是2022年7月,该数字已经跃升至所有用户的96%以上。 - phuzi
2个回答

2

根据我的经验,使用服务工作者并非必须要实现离线功能的渐进式 Web 应用程序。

只要你的 PWA 页面被正确标记为可缓存的,你就可以完全离线运行 PWA,并且如果页面的生命周期在浏览器缓存寿命内,则不需要连接到服务器。Chrome 的“创建快捷方式”功能是由 Webmanifest 驱动的,而不是因为它使用了服务工作者。如果一个页面有一个清单,你可以为其创建一个桌面快捷方式。

此外,你可以对一个明确没有被缓存的 URL 进行 AJAX 调用,以确定你是否处于离线或在线状态,并通过使用 location.reload() 根据“更新”URL 告诉你是否需要更新页面。

更新:Chrome 和 MS Edge 要求服务工作者控制页面,以便在地址栏中提供“安装”按钮。

Edge install button Chrome install button,

在这里还可以看到 浏览器栏中的渐进式 Web 应用程序未显示安装按钮

所需的服务工作者可以非常基本,并利用浏览器内置缓存:无需使用服务工作器缓存。
为了更好地了解实际情况,我创建了一个小型 GitHub 项目,在https://github.com/leopatras/simple_offline_pwa上可见。

该页面可以在https://www.generomobile.de/gmi/simple_offline_pwa/test.html上直接检查。


2
这将取决于浏览器,但是如果您希望您的PWA可安装,则大多数浏览器要求必须有一个具有fetch处理程序的服务工作者。

https://web.dev/install-criteria/#criteria

关于Chrome:
注册具有获取处理程序的服务工作者。
它还说:
其他浏览器也有类似的安装标准,尽管可能存在一些小差异。

1
这不再是情况,而且"https://web.dev/install-criteria/#criteria"中的"Registers a service worker with a fetch handler"这一点已被删除。 - asu

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