以前のバージョンの Angular Service Worker 実装では、構成オプションの 1 つが"routing"
. これは、この未回答の SO の質問で見ることができ、このAngular CLI の問題で参照されました。残りの最良のドキュメントは、(Angular チームの) Stephen Fluin によるブログ投稿と、Alex RickabaughによるI/O トークのようです。 (Google から)。
Angular 5 では、が適切に構築されており、ほとんどの構成をファイルServiceWorkerModule
を使用して処理できるようになりました。ただし、 angular.io ガイドやドキュメントngsw-config.json
のどこにも、ルートのリダイレクトを処理する方法についての言及はありません。したがって、次の問題が発生します。アプリにアクセスしてオフラインにしても、直接アクセスするとアプリにアクセスできます: https://jackkoppa.github.io/cityaq-sw-issue。ただし、ロード時にアプリはルートにリダイレクトされ、ほとんどのユーザーはhttps://jackkoppa.github.io/cityaq-sw-issue/search?cities=Shanghaiのような URL からロードしようとします。search
(簡単にするために、今のところ Chrome デスクトップとモバイルについて話しているだけで、可能な場合はシークレット モードで話しています)。
オフラインでその URL にアクセスしようとすると、すぐに 504 - Gateway Timeout が表示されます。これは、Service Worker がインデックスをキャッシュしただけであり、他のルートがインデックスをロードできるようにリダイレクトする必要があることを認識していないために発生しています。特定のルートのインデックスへのリダイレクトを設定することで、Angular Service Worker 実装の以前の反復でこのシナリオを処理できたと確信しています。現在のAngular 5+ ngsw-config.json
、または生成されたngsw.json
ファイルでこのリダイレクトを処理する方法はありますか? それを除けば、別の Service Worker JS ファイルで回避策をどのように処理する必要がありますか?