Request: isHistoryNavigation プロパティ

メモ: この機能はウェブワーカー内で利用可能です。

isHistoryNavigationRequest インターフェイスの。読み取り専用プロパティで、このリクエストが履歴ナビゲーションであるかどうかを示す論理値です。

履歴ナビゲーションは、ブラウザーの履歴の中の移動であり、 History.go()History.back()History.forward()Navigation.traverseTo()Navigation.back()Navigation.forward() を呼び出したり、ブラウザーの前ページ、次ページへのナビゲーションボタンをクリックしたりして行うものです。

論理値です。

この例は、サービスワーカー内で実行されます。 fetch イベントを待ち受けします。イベントハンドラー内で、サービスワーカーは isHistoryNavigation プロパティをチェックして、リクエストが履歴ナビゲーションによるものかどうかを判断します。 履歴ナビゲーションによるリクエストの場合は、キャッシュされたレスポンスで応答しようと試みます。 キャッシュがこのリクエストに対するレスポンスを含んでいない場合は、サービスワーカーはネットワークからレスポンスを取得し、その複製をキャッシュし、ネットワークレスポンスで応答します。

js
self.addEventListener("request", (event) => {
  // ...

  if (event.request.isHistoryNavigation) {
    event.respondWith(
      caches.match(event.request).then((response) => {
        if (response !== undefined) {
          return response;
        } else {
          return fetch(event.request).then((response) => {
            let responseClone = response.clone();

            caches.open("v1").then((cache) => {
              cache.put(event.request, responseClone);
            });

            return response;
          });
        }
      }),
    );
  }

  // ...
});

仕様書

Specification
Fetch
# ref-for-dom-request-ishistorynavigation①

ブラウザーの互換性

BCD tables only load in the browser

関連情報