このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

Request: isReloadNavigation プロパティ

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

Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

isReloadNavigationRequest インターフェイスの読み取り専用プロパティで、リクエストがユーザーによる再読み込みであるかどうかを示す論理値です。

ユーザーによる再読み込みは、Cmd/Ctrl + R のキーを押す、ブラウザーの再読み込みボタンをクリックするなどのブラウザー操作によって、あるいはプログラム的に(例えば、Location.reload()History.go(0)Navigation.reload() を呼び出すなど)によって実行できます。

このプロパティは、主にサービスワーカーの fetch イベントハンドラー内で、再読み込みリクエストとそれ以外のリクエストに対して適切に対応するために使用されます。 例えば、再読み込みリクエストは、ユーザーが最新のデータを期待していることを示しているため、キャッシュ内のコンテンツよりもサーバーからのコンテンツを推奨すべきです。

論理値です。

基本的な使い方

次の例は、サービスワーカーのスクリプト内で使用でき、ページの再読み込みを調べて適切に対応するために利用できます。

fetch イベントハンドラー内では、まず、そのイベントの Request.modenavigate であり、isReloadNavigation プロパティが true であるかどうかを調べます。その場合、これはナビゲーションの再読み込みであるため、更新されたバージョンを提供するためにネットワークからページを取得します。それが失敗した場合は、代替手段として Cache からページを取得しようとします。

ナビゲーションが再読み込みを伴うものでない場合、まず Cache からページを取得しようと試み、キャッシュされたページが得られない場合にのみ、ネットワークから取得します。

js
self.addEventListener("fetch", (event) => {
  if (event.request.mode === "navigate" && event.request.isReloadNavigation) {
    event.respondWith(
      fetch(event.request).catch(() => caches.match(event.request)),
    );
  } else {
    event.respondWith(
      caches
        .match(event.request)
        .then((cached) => cached || fetch(event.request)),
    );
  }
});

仕様書

仕様書
Fetch
# dom-request-isreloadnavigation

ブラウザーの互換性

関連情報