--- title: CacheStorage.match() slug: Web/API/CacheStorage/match tags: - API - CacheStorage - Method - Reference - Service Workers - Service worker API - ServiceWorker - match translation_of: Web/API/CacheStorage/match ---
{{APIRef("Service Workers API")}}
{{domxref("CacheStorage")}} インターフェイスの match()
メソッドは、所与の {{domxref("Request")}} または URL 文字列が保存された {{domxref("Response")}} のキーであるかどうかをチェックします。 このメソッドは、{{domxref("Response")}} の {{jsxref("Promise")}}、または一致が見つからない場合に undefined
に解決される {{jsxref("Promise")}} を返します。
グローバルな {{domxref("WindowOrWorkerGlobalScope.caches", "caches")}} プロパティを介して CacheStorage
にアクセスできます。
Cache
オブジェクトは作成順に検索されます。
caches.match(request, options).then(function(response) { // response で何かをする });
match
操作での照合方法を制御するプロパティを持つオブジェクト。 利用可能なオプションは次のとおりです。
ignoreSearch
: 照合方法が URL のクエリ文字列を無視するかどうかを指定する {{jsxref("Boolean")}}。 例えば、true
に設定すると、http://foo.com/?value=bar
の ?value=bar
部分は、照合するときに無視されます。 デフォルトは false
です。ignoreMethod
: true
に設定すると、照合方法が {{domxref("Request")}} http
メソッドを検証できないようにする {{jsxref("Boolean")}}(通常は GET
と HEAD
のみが許可されます)。 デフォルトは false
です。ignoreVary
: true
に設定された場合、VARY
ヘッダーの照合をしないように照合方法に指示する {{jsxref("Boolean")}}。 つまり、URL が一致する場合、{{domxref("Response")}} オブジェクトに VARY
ヘッダーがあるかどうかに関係なく一致します。 デフォルトは false
です。cacheName
: 検索する特定のキャッシュを表す {{domxref("DOMString")}}。一致する {{domxref("Response")}} に解決される {{jsxref("Promise")}}。 指定されたリクエストに対する一致するレスポンスが見つからない場合、Promise
は undefined
に解決されます。
この例は MDN の sw-test の例からのものです(sw-test をライブで見る)。 ここでは、{{domxref("FetchEvent")}} が発生するのを待ちます。 次のようなカスタムレスポンスを作成します。
open()
を使用して v1
キャッシュを開き、{{domxref("Cache.put","Cache.put()")}} を使用してデフォルトのネットワークリクエストをキャッシュに入れ、return response.clone()
を使用してデフォルトのネットワークリクエストのクローンを返します。 put()
がレスポンスのボディを消費するため、最後が必要です。self.addEventListener('fetch', function(event) { event.respondWith(caches.match(event.request).then(function(response) { // caches.match() は常に解決します // ただし、成功の場合はレスポンスに値があります if (response !== undefined) { return response; } else { return fetch(event.request).then(function (response) { // レスポンスは1回のみ使用できます // クローンを保存して、1番目のコピーをキャッシュに入れ、 // 2番目のコピーを提供する必要があります let responseClone = response.clone(); caches.open('v1').then(function (cache) { cache.put(event.request, responseClone); }); return response; }).catch(function () { return caches.match('/sw-test/gallery/myLittleVader.jpg'); }); } })); });
仕様 | 状態 | コメント |
---|---|---|
{{SpecName('Service Workers', '#dom-cachestorage-match', 'CacheStorage: match')}} | {{Spec2('Service Workers')}} | 初期定義 |
{{Compat("api.CacheStorage.match")}}