CacheStorage: match()-Methode
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2018.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die match()-Methode des CacheStorage-Interfaces überprüft, ob eine gegebene Request- oder URL-Zeichenfolge ein Schlüssel für eine gespeicherte Response ist.
Diese Methode gibt ein Promise für eine Response zurück oder ein Promise, das auf undefined aufgelöst wird, wenn kein Treffer gefunden wird.
Sie können auf CacheStorage über die Window.caches-Eigenschaft in Fenstern oder über die WorkerGlobalScope.caches-Eigenschaft in Workern zugreifen.
Cache-Objekte werden in der Erstellungsreihenfolge durchsucht.
Hinweis:
caches.match() ist eine Komfortmethode.
Eine gleichwertige Funktionalität besteht darin, cache.match() für jeden Cache (in der Reihenfolge, die von caches.keys() zurückgegeben wird) aufzurufen, bis eine Response zurückgegeben wird.
Syntax
match(request)
match(request, options)
Parameter
request-
Die
Request, die Sie abgleichen möchten. Dies kann einRequest-Objekt oder eine URL-Zeichenfolge sein. optionsOptional-
Ein Objekt, dessen Eigenschaften steuern, wie das Matching in der
match-Operation durchgeführt wird. Die verfügbaren Optionen sind:ignoreSearch-
Ein boolescher Wert, der angibt, ob der Matching-Prozess die Abfragezeichenfolge in der URL ignorieren soll. Wenn zum Beispiel auf
truegesetzt, würde der?value=barTeil vonhttps://example.com/?value=barbeim Matching ignoriert. Standard istfalse. ignoreMethod-
Ein boolescher Wert, der, wenn auf
truegesetzt, verhindert, dass Matching-Operationen diehttp-Methode derRequestvalidieren (normalerweise sind nurGETundHEADerlaubt). Standard istfalse. ignoreVary-
Ein boolescher Wert, der, wenn auf
truegesetzt, die Matching-Operation anweist, keinVARYHeader-Matching durchzuführen. Mit anderen Worten: Wenn die URL übereinstimmt, erhalten Sie einen Treffer, unabhängig davon, ob dasResponse-Objekt einenVARY-Header hat oder nicht. Standard istfalse. cacheName-
Eine Zeichenkette, die einen bestimmten Cache darstellt, in dem gesucht werden soll.
Rückgabewert
Ein Promise, das die übereinstimmende Response auflöst. Wenn keine übereinstimmende Antwort auf die angegebene Anfrage gefunden wird, wird das Promise mit undefined aufgelöst.
Beispiele
Dieses Beispiel stammt aus dem MDN einfachen Service-Worker-Beispiel (siehe einfacher Service Worker live).
Hier warten wir, bis ein FetchEvent ausgelöst wird. Wir konstruieren eine benutzerdefinierte Antwort wie folgt:
- Prüfen, ob ein Treffer für die Anfrage in der
CacheStoragemitCacheStorage.match()gefunden wird. Falls ja, dienen Sie diese. - Falls nicht, öffnen Sie den
v1Cache mitopen(), setzen die Standardnetzwerkanfrage in den Cache mitCache.put()und geben Sie einen Klon der Standardnetzwerkanfrage mittelsreturn response.clone()zurück. Das Letzte ist notwendig, daput()den Antwortkörper verbraucht. - Wenn dies fehlschlägt (z. B. weil das Netzwerk ausgefallen ist), geben Sie eine Fallback-Antwort zurück.
self.addEventListener("fetch", (event) => {
event.respondWith(
caches.match(event.request).then((response) => {
// caches.match() always resolves
// but in case of success response will have value
if (response !== undefined) {
return response;
}
return fetch(event.request)
.then((response) => {
// response may be used only once
// we need to save clone to put one copy in cache
// and serve second one
let responseClone = response.clone();
caches
.open("v1")
.then((cache) => cache.put(event.request, responseClone));
return response;
})
.catch(() => caches.match("/gallery/myLittleVader.jpg"));
}),
);
});
Spezifikationen
| Specification |
|---|
| Service Workers Nightly> # cache-storage-match> |