CacheStorage.match()
match() は CacheStorage インターフェイスのメソッドで、所与の Request または URL 文字列が保存された Response のキーであるかどうかをチェックします。 このメソッドは、Response の Promise、または一致するものが見つからない場合に undefined に解決される Promise を返します。
CacheStorage には、グローバルな caches プロパティを介してアクセスできます。
Cache オブジェクトは作成順に検索されます。
メモ: caches.match() は便利なメソッドです。
各キャッシュに対して(caches.keys() によって返される順序で)、Response が返されるまで cache.match() を呼び出すのと同等の機能です。
構文
js
match(request)
match(request, options)
引数
requestoptions省略可-
match操作での照合方法を制御するプロパティを持つオブジェクト。 利用可能なオプションは次のとおりです。ignoreSearch-
論理値で、照合処理が URL のクエリー文字列を無視するかどうかを指定します。例えば、
trueに設定すると、http://foo.com/?value=barの?value=bar部分は、照合するときに無視されます。 既定値はfalseです。 ignoreMethod-
論理値で、
trueに設定すると、照合処理がRequestの HTTP メソッドを検証しないようにします(通常はGETとHEADのみが許可されます)。 既定値はfalseです。 ignoreVary-
論理値で、
trueに設定すると、VARYヘッダーの照合をしないように照合処理に支持します。 つまり、URL が一致する場合、ResponseオブジェクトにVARYヘッダーがあるかどうかに関係なく一致します。 既定値はfalseです。 cacheName-
文字列で、検索する特定のキャッシュを表します。
返値
例
このコードスニペットは、MDN の単純なサービスワーカーの例からのものです(単純なサービスワーカーがライブで実行するのを見る)。
ここで、 FetchEvent が発行されるのを待ちます。そして次のように独自のレスポンスを構築します。
CacheStorageでCacheStorage.match()を使用して、リクエストに一致するものがあるかどうかを確認します。もしあれば、それを提供します。- ない場合は、
v1キャッシュをopen()で開き、Cache.put()を使用して既定のネットワークリクエストをキャッシュに入れ、return response.clone()を使用して既定値のネットワークリクエストのクローンを返します。put()がレスポンスの本体を消費するため、最後に必要です。 - 失敗した場合(例えば、ネットワークがダウンしているため)、フォールバックレスポンスを返します。
js
self.addEventListener("fetch", (event) => {
event.respondWith(
caches.match(event.request).then((response) => {
// caches.match() は常に解決します
// ただし、成功の場合はレスポンスに値があります
if (response !== undefined) {
return response;
} else {
return fetch(event.request)
.then((response) => {
// レスポンスは 1 回のみ使用できます
// クローンを保存して、 1 番目のコピーをキャッシュに入れ、
// 2 番目のコピーを提供する必要があります
let responseClone = response.clone();
caches.open("v1").then((cache) => {
cache.put(event.request, responseClone);
});
return response;
})
.catch(() => caches.match("/gallery/myLittleVader.jpg"));
}
})
);
});
仕様書
| Specification |
|---|
| Service Workers # cache-storage-match |
ブラウザーの互換性
BCD tables only load in the browser