我有一个 PWA,我试图用它来创建一个 Android 应用程序 (apk),它使用气泡包装工具 ( https://github.com/GoogleChromeLabs/bubblewrap ) 具有受信任的 Web 活动。为了检查 PWA 标准,它使用了未通过以下审计步骤(红色)的 Lighthouse:
start_url does not respond with a 200 when offline
Timed out waiting for start_url to respond.
但实际上关于当前页面离线的步骤是可以的(绿色):
Current page responds with a 200 when offline
我的 PWA 托管在一个 URL 上:https ://example.com/myapp/ 。因此服务工作者(清单)在“/myapp/”处具有启动 url 和范围。因此,如果我以离线模式访问此页面(选中开发工具“应用程序”选项卡中的“离线”框),它会提供一个离线页面,该页面在安装服务工作者时在开始时缓存(我遵循此示例:https: //developer.mozilla.org/en-US/docs/Web/API/Cache/match一切似乎都很好,我什至在我的手机上以飞行模式进行了测试)。
此外,启动页面重定向到 ?locale=en 但它是同一个网页(因此在离线模式下,每个 url 似乎都显示我的离线 html 页面)。更奇怪的是,在大约 20-30 份审计报告中,有一次通过了这一步,随机)
我正在 Mac、Chrome 84 上进行 Lighthouse 测试。
编辑: 所以我做了一些测试,我看到如果我访问http://example.com/myapp(而不是http://example.com/myapp/ - 最后有 / ),离线 html 页面不再显示。但是在清单中,范围和 start_url 被设置为“/myapp/”,所以我不知道这是否是一个问题(如果我将它们设置为“/myapp”,PWA 将不再工作,说没有该路径上的服务人员,这听起来很奇怪,因为我的码头服务器将 /myapp 重定向到 /myapp/ 两者应该是相同的资源)