1

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 をサポートするブラウザも含む) でサポートされておらず、失敗するまれなケースがいくつかあります。

ナビゲーション以外のリクエストに対応する便利でベスト プラクティスな方法はありますか?

4

1 に答える 1