现代网络被各种各样的人们所享用,他们使用各种不同的设备和网络连接类型。您的作品可以触达世界各地的用户,但是为所有用户在 Web 上提供可靠的体验可能具有挑战性。仅仅理解可靠性意味着什么就可能是一个挑战。
离线时可靠
考虑可靠性的一种方式是您的 Web 应用是否可以在没有网络连接的情况下工作。对于从应用商店安装在移动设备上的特定于平台的应用,用户认为这是一种理所当然的可靠性。当您看到其中一个应用的图标时,您希望能够点击它并打开某种体验,而无需考虑您当前是否已连接到互联网。
直到最近,构建在没有网络连接的情况下也可靠的 Web 应用程序一直是一项挑战。
可靠的快速
考虑可靠性的另一种方式是,当用户的网络连接可能不太理想时,他们是否可以依赖您的 Web 应用以足够快的速度加载。当返回用户使用蜂窝网络连接时,他们与您的 Web 应用交互的体验是否与他们使用 Wi-Fi 时相同?以及那些具有高延迟或“虚假 Wi-Fi”连接的用户呢?即使在这些情况下,您的 Web 应用是否也能保持可靠的快速?
仅仅在最佳情况下速度快是不够的。您的用户将通过您的 Web 应用在所有网络条件下的表现来评价其性能。
可靠性是可以实现的
好消息是,现代 Web 平台提供了诸如 Service Workers 和 Cache Storage API 等技术,它们可以作为创建可靠 Web 应用程序的构建块。它们允许您编写位于您的 Web 应用和网络之间的代码。在许多情况下,您可以完全绕过网络,而是使用先前缓存的内容来满足您的 Web 应用的请求。
您的指路明灯:离线时响应 200 OK
一旦您开始构建 Service Worker 并从缓存中提供内容,就很难知道您是否有效地执行了此操作。您如何知道您实现的 Service Worker 真的可以帮助您的 Web 应用避免网络?您如何防止对缓存策略的微小更改破坏您精心设计的离线体验?
Lighthouse 提供了一项特定测试,该测试在构建可靠的 Web 应用时特别令人关注:离线时响应 200 OK

这里实际测试的是什么?它可以归结为模拟浏览器中网络连接的丢失,然后尝试加载您网站上正在审核的任何 URL。这测试了构建可靠网站的一个方面——离线时可靠——使用受控、可重复的操作序列。
这是一个旅程
如果您刚刚开始,那么您很可能会在“离线时响应 200”检查中得到否定结果。没关系!除非您使用自定义的入门项目,否则 Web 应用程序默认情况下不具有这种类型的可靠性。接下来的几个指南将介绍您识别 Web 应用正在加载的内容所需的技术,并教您如何使用 Lighthouse 使加载体验可靠。
在整个过程中,我们鼓励您不断重新运行 Lighthouse 审核。它们在您的旅程中充当指路明灯,从新的 Web 应用程序开始,到可靠的渐进式 Web 应用结束。