Cache: 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 der Cache Schnittstelle gibt ein Promise zurück, das auf die Response aufgelöst wird, die mit der ersten übereinstimmenden Anfrage im Cache Objekt verknüpft ist.
Wenn keine Übereinstimmung gefunden wird, wird das Promise auf undefined aufgelöst.
Syntax
match(request)
match(request, options)
Parameter
request-
Der
Request, für den Sie versuchen, Antworten imCachezu finden. Dies kann einRequest-Objekt oder eine URL-Zeichenfolge sein. optionsOptional-
Ein Objekt, das Optionen für den
matchVorgang festlegt. Die verfügbaren Optionen sind:ignoreSearch-
Ein boolescher Wert, der angibt, ob die Abfragezeichenfolge in der URL ignoriert werden soll. Wenn beispielsweise auf
truegesetzt, würde der?value=barTeil vonhttp://foo.com/?value=barbei der Durchführung einer Übereinstimmung ignoriert werden. Standardmäßig ist esfalse. ignoreMethod-
Ein boolescher Wert, der, wenn auf
truegesetzt, verhindert, dass der Abgleichsvorgang diehttpMethode vonRequestvalidiert (normalerweise sind nurGETundHEADerlaubt). Standardmäßig ist esfalse. ignoreVary-
Ein boolescher Wert, der, wenn auf
truegesetzt, dem Abgleichsvorgang mitteilt, dass keinVARYHeader-Abgleich durchgeführt werden soll — d.h. wenn die URL übereinstimmt, erhalten Sie eine Übereinstimmung, unabhängig davon, ob dasResponse-Objekt einenVARYHeader hat. Standardmäßig ist esfalse.
Rückgabewert
Ein Promise, das auf die erste Response aufgelöst wird, die der Anfrage entspricht oder auf undefined, wenn keine Übereinstimmung gefunden wird.
Hinweis:>Cache.match() ist im Grunde identisch mit
Cache.matchAll(), außer dass es nicht mit einem Array von
allen übereinstimmenden Antworten aufgelöst wird, sondern nur mit der ersten übereinstimmenden Antwort (das heißt,
response[0]).
Beispiele
Dieses Beispiel stammt aus dem benutzerdefinierten Offline-Seite Beispiel (Live-Demo). Es verwendet einen Cache, um ausgewählte Daten bereitzustellen, wenn ein Request fehlschlägt. Eine
catch()-Klausel wird ausgelöst, wenn der Aufruf von fetch() eine
Ausnahme auslöst. Innerhalb der catch()-Klausel wird match() verwendet, um
die korrekte Antwort zurückzugeben.
In diesem Beispiel werden nur HTML-Dokumente, die mit dem GET HTTP Verb abgerufen wurden,
zwischengespeichert. Wenn unsere if () Bedingung false ist, wird dieser Fetch-Handler die Anfrage nicht
abfangen. Wenn andere Fetch-Handler registriert sind, erhalten sie die Gelegenheit, event.respondWith() aufzurufen. Falls kein Fetch-Handler
event.respondWith() aufruft, wird die Anfrage von dem Browser so behandelt, als ob keine Service Worker-Beteiligung vorliegt. Wenn fetch() eine gültige HTTP
Antwort mit einem Antwortcode im Bereich 4xx oder 5xx zurückgibt, wird das catch() nicht
aufgerufen.
self.addEventListener("fetch", (event) => {
// We only want to call event.respondWith() if this is a GET request for an HTML document.
if (
event.request.method === "GET" &&
event.request.headers.get("accept").includes("text/html")
) {
console.log("Handling fetch event for", event.request.url);
event.respondWith(
fetch(event.request).catch((e) => {
console.error("Fetch failed; returning offline page instead.", e);
return caches
.open(OFFLINE_CACHE)
.then((cache) => cache.match(OFFLINE_URL));
}),
);
}
});
Spezifikationen
| Specification |
|---|
| Service Workers> # cache-match> |
Browser-Kompatibilität
Loading…