离线时使用非基础 URL 打开单页应用程序 PWA
Opening a Single Page App PWA using a non-base URL when offline
让我们举一个使用单页应用程序 (SPA) 框架构建的 PWA(渐进式 Web 应用程序)示例,例如 Angular - https://www.ngcolombia.com.
- 打开网站。
- 导航到不同的页面,例如:https://www.ngcolombia.com/speakers。
- 离线并点击重新加载 - 网站将不会加载。
如果我们尝试从基础 URL 重新加载它可以工作,但在单页应用程序中,通常从具有完整 URL.
的不同页面重新加载
如何解决此问题,似乎特定于 SPA PWA?
当使用 Application Shell architecture 时(通常在单页应用程序中就是这种情况),您通常希望 service worker 做的是响应所有导航请求,而不管 URL,你的缓存应用 Shell HTML.
您可以使用 navigationUrls
选项配置 Angular 的服务工作者来执行此操作:https://angular.io/guide/service-worker-config#navigationurls
这种方法不需要在您的 URL 中使用散列——您可以继续使用真实的 URL 和历史记录 API。
让我们举一个使用单页应用程序 (SPA) 框架构建的 PWA(渐进式 Web 应用程序)示例,例如 Angular - https://www.ngcolombia.com.
- 打开网站。
- 导航到不同的页面,例如:https://www.ngcolombia.com/speakers。
- 离线并点击重新加载 - 网站将不会加载。
如果我们尝试从基础 URL 重新加载它可以工作,但在单页应用程序中,通常从具有完整 URL.
的不同页面重新加载如何解决此问题,似乎特定于 SPA PWA?
当使用 Application Shell architecture 时(通常在单页应用程序中就是这种情况),您通常希望 service worker 做的是响应所有导航请求,而不管 URL,你的缓存应用 Shell HTML.
您可以使用 navigationUrls
选项配置 Angular 的服务工作者来执行此操作:https://angular.io/guide/service-worker-config#navigationurls
这种方法不需要在您的 URL 中使用散列——您可以继续使用真实的 URL 和历史记录 API。