在以前版本的 Angular 服务工作者实现中,配置选项之一是"routing"
. 这可以在这个未回答的 SO 问题中看到,在这个Angular CLI 问题中被引用,剩下的最好的文档似乎是Stephen Fluin(在 Angular 团队中)的博客文章,以及来自 Alex Rickabaugh的I/O 演讲(来自谷歌)。
使用 Angular 5,ServiceWorkerModule
已经很好地构建了,现在可以使用该ngsw-config.json
文件处理大部分配置。但是,在angular.io 指南或文档中的任何地方,都不再提及如何处理路由重定向。所以我最终遇到了以下问题:当我访问了我的应用程序并离线时,我直接访问它时仍然可以访问该应用程序:https ://jackkoppa.github.io/cityaq-sw-issue 。但是,在加载应用程序时会重定向到search
路由,大多数用户会尝试从https://jackkoppa.github.io/cityaq-sw-issue/search?cities=Shanghai之类的 URL 加载(为简单起见,我现在只谈论 Chrome 桌面和移动设备,并尽可能使用隐身模式)。
当您尝试在离线时访问该 URL 时,您会立即收到 504 - Gateway Timeout。发生这种情况是因为 service worker 只缓存了索引,并且不知道其他路由应该重定向到索引以便它可以加载。我相信 Angular 服务工作者实现的先前迭代可以通过设置重定向到给定路由的索引来处理这种情况。有没有办法在当前的 Angular 5+ngsw-config.json
或生成的ngsw.json
文件中处理这个重定向?除此之外,应该如何在单独的服务工作者 JS 文件中处理解决方法?