--- title: FetchEvent.preloadResponse slug: Web/API/FetchEvent/PreloadResponse tags: - API - FetchEvent - Offline - Property - Reference - Service Workers - Web Performance - Workers - request translation_of: Web/API/FetchEvent/PreloadResponse ---
{{domxref("FetchEvent")}} インターフェイスの preloadResponse
読み取り専用プロパティは、ナビゲーションプリロードがトリガーされた場合はナビゲーションプリロード {{domxref("Response")}} に解決され、それ以外の場合は undefined
に解決される {{jsxref("Promise")}} を返します。
var expectedResponse = fetchEvent.preloadResponse;
{{domxref("Response")}} に解決されるか、それ以外の場合は undefined
に解決される {{jsxref("Promise")}}。
このコードスニペットは、ナビゲーションプリロードのページ(英語)からのものです。 {{domxref("ServiceWorkerGlobalScope.onfetch")}} イベントハンドラーは、fetch
イベントをリッスンします。 起動したら、{{domxref("FetchEvent.respondWith", "FetchEvent.respondWith()")}} に、制御されたページに戻す Promise を渡します。 この Promise は、{{domxref("Cache")}} オブジェクトで最初に一致した URL リクエストに解決されます。 一致が見つからない場合、コードはプリロード済みのレスポンスをチェックします。 それ以外の場合は、ネットワークからレスポンスをフェッチします。
addEventListener('fetch', event => { event.respondWith(async function() { // 可能な場合はキャッシュから応答します const cachedResponse = await caches.match(event.request); if (cachedResponse) return cachedResponse; // それ以外の場合は、プリロード済みのレスポンスがあればそれを使用します const response = await event.preloadResponse; if (response) return response; // それ以外の場合は、ネットワークを試します。 return fetch(event.request); }()); });
仕様 | 状態 | コメント |
---|---|---|
{{SpecName('Service Workers', '#fetch-event-preloadresponse', 'preloadResponse')}} | {{Spec2('Service Workers')}} | 初期定義 |
{{Compat("api.FetchEvent.preloadResponse")}}