改进渐进式 Web 应用离线支持检测

潘妮·麦克拉克伦
Penny McLachlan

渐进式 Web 应用 (PWA) 是一种使用网页技术面向移动设备和桌面设备构建现代可安装应用的模式。

构建现代 Web 体验(而非巧合使用 PWA)的标准之一是,即使设备处于离线状态,应用也必须继续运行。这意味着,如果用户失去对其设备的网络访问权限,Chrome 恐龙屏幕将不会显示!

所有 PWA 标准的目标都是帮助确保用户在浏览网页时获得优质的应用竞争体验。在为 PWA 启用安装功能之前,Chrome 会根据 PWA 条件进行检查。

只有满足所有核心渐进式 Web 应用可安装性标准(包括支持离线模式)的应用才能通过 Chrome 安装到设备上。

之前的离线检测逻辑

多年来,离线支持验证一直是 PWA 可安装性标准的一部分。不久之前,Chrome 还无法通过 Service Worker 模拟请求,因此无法全面检查离线行为是否正确。

Service Worker 示意图

这意味着 Chrome 无法验证 fetch 事件处理脚本在离线检查期间是否返回了采用 HTTP 200 的有效资源。Chrome 仅检查了 Service Worker 是否确实具有 fetch 处理程序。

更新了离线检测逻辑

Chrome 89 添加了通过 Service Worker 运行模拟离线请求的功能,使离线检测逻辑得到改进,可以更好地反映应用的实际离线支持。

我们计划使用这项新功能来确保 PWA 在离线时提供有效页面,但目前仍保留这些计划。如果页面具有包含 fetch 事件处理脚本的 Service Worker,系统会继续通过可安装性检查。

这对开发者有什么影响?

虽然现在不需要进行任何更改,但我们强烈建议您提供离线体验,因为我们预计日后会使用更新后的逻辑来检查网页是否有效。

您可以自行决定要提供哪种离线体验。 一方面是功能齐全的离线体验。这意味着预先缓存所需的所有资源和数据,并在用户恢复在线状态时与服务器同步数据。缓存资源还有助于提升核心网页指标,因为用户无需每次都从网络下载资源。另一端是自定义离线回退页面

在 Chrome 90 左右,开发者工具的问题标签页下显示的警告将被移除。