为什么从 "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);
我们已经使我们的站点 (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);