Workbox で非ナビゲーション リクエストのみを一致させる方法はありますか? たとえば、アプリ シェルに挿入したい複数の AMP ページを含むアプリがあるので、これらのページへのすべてのナビゲーションをインターセプトし、次のようにシェルで応答します。
workboxSW.router.registerNavigationRoute('shell.html', {
whitelist: [/./]
});
また、他のすべてのリクエストをインターセプトし、次のようにキャッシュ ファースト戦略で処理したいと考えています。
workboxSW.router.registerRoute('/*',
workboxSW.strategies.cacheFirst()
);
しかし、このルートは最初のルートと重なっています。探している動作を得るために、2 つのルートを次のコードに置き換えることができます。
workboxSW.router.registerRoute('/*', args => {
if (args.event.request.mode !== 'navigate') {
return workboxSW.strategies.cacheFirst().handle(args);
}
return caches.match('/shell.html', {ignoreSearch: true});
});
ただし、request.mode は一部のモバイル ブラウザ(Service Worker をサポートするブラウザも含む) でサポートされておらず、失敗するまれなケースがいくつかあります。
ナビゲーション以外のリクエストに対応する便利でベスト プラクティスな方法はありますか?