为什么从 "Add to Homescreen" 启动的 PWA 应用程序在没有互联网连接的情况下无法加载?

Why PWA App launched from "Add to Homescreen" can't load without Internet connection?

我们已经使我们的站点 (https://www.hijup.com) PWA 准备好添加到主屏幕功能。该应用程序可以在互联网连接打开的情况下从主屏幕启动。但是当连接关闭时,出现如下对话框:

"To use [my_app_name] for the first time, please connect to the Internet"

为什么它仍然需要互联网连接?所有 JS 和 CSS 都已预缓存(使用 workbox.precaching)并且 start_url 已使用 networkFirst 策略缓存。此外,这不是我第一次启动该应用程序(如对话框消息所示)。

在使您的网站符合 PWA 方面做得很好...几乎。根据 Chrome Lighthouse PWA 审计报告,还剩下一件小事导致了这个问题。 start_url 在 manifest.json 中无效。 尝试输入

"start_url": "https://www.hijup.com/", 

而不是

"start_url": "/en?utm_source=a2hs",

您可以 运行 Chrome 开发工具 > 审核 -> 渐进式网络应用程序,让您自己查看问题是否得到解决(它会在启动 URL 正确时服务)

这是通过修复路由匹配器解决的:

之前是:

 workbox.routing.registerRoute(new RegExp('www\.hijup\.com/id/$'), pagesHandler);

正则表达式与我的 start_url 不匹配:"/en?utm_source=a2hs"

修复是允许 Regex 匹配后缀 ?utm_source=a2hs

workbox.routing.registerRoute(new RegExp('www\.hijup\.com/id/?(?:\?.+)?$'), pagesHandler);