Cache: Methode match()
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 Cache-Interfaces gibt ein Promise zurück, das auf die Response aufgelöst wird, die mit der ersten übereinstimmenden Anfrage im Cache-Objekt verbunden ist. Wenn keine Übereinstimmung gefunden wird, wird das Promise auf undefined aufgelöst.
Syntax
match(request)
match(request, options)
Parameter
request-
Die
Request, für die Sie versuchen, Antworten imCachezu finden. Dies kann einRequest-Objekt oder ein URL-String sein. optionsOptional-
Ein Objekt, das Optionen für die
match-Operation festlegt. Die verfügbaren Optionen sind:ignoreSearch-
Ein boolescher Wert, der angibt, ob der Abfrage-String in der URL ignoriert werden soll. Wenn er zum Beispiel auf
truegesetzt ist, würde der Teil?value=barvonhttps://example.com/?value=barbei der Durchführung eines Abgleichs ignoriert werden. Der Standardwert istfalse. ignoreMethod-
Ein boolescher Wert, der, wenn er auf
truegesetzt ist, die Abgleichsoperationen daran hindert, dieRequesthttp-Methode zu validieren (normalerweise sind nurGETundHEADerlaubt). Der Standardwert istfalse. ignoreVary-
Ein boolescher Wert, der, wenn er auf
truegesetzt ist, der Abgleichsoperation mitteilt, keinenVARY-Header-Abgleich durchzuführen — d.h. wenn die URL übereinstimmt, erhalten Sie eine Übereinstimmung, unabhängig davon, ob dasResponse-Objekt einenVARY-Header hat. Der Standardwert istfalse.
Rückgabewert
Ein Promise, das auf die erste Response aufgelöst wird, die mit der Anfrage übereinstimmt, oder auf undefined, wenn keine Übereinstimmung gefunden wird.
Hinweis:
Cache.match() ist im Wesentlichen identisch mit Cache.matchAll(), außer dass es nicht mit einem Array aller übereinstimmenden Antworten aufgelöst wird, sondern nur mit der ersten übereinstimmenden Antwort (also response[0]).
Beispiele
Dieses Beispiel stammt aus dem Beispiel der benutzerdefinierten Offline-Seite (Live-Demo). Es verwendet einen Cache, um ausgewählte Daten bereitzustellen, wenn eine Anfrage 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 richtige Antwort zurückzugeben.
In diesem Beispiel werden nur HTML-Dokumente, die mit dem HTTP-Verb GET abgerufen wurden, zwischengespeichert. Wenn unsere if ()-Bedingung falsch ist, wird dieser Fetch-Handler die Anfrage nicht abfangen. Wenn andere Fetch-Handler registriert sind, haben sie die Möglichkeit, event.respondWith() aufzurufen. Wenn kein Fetch-Handler event.respondWith() aufruft, wird die Anfrage vom Browser behandelt, als ob es keinen Service-Worker-Eingriff gegeben hätte. Wenn fetch() eine gültige HTTP-Antwort mit einem Antwortcode im Bereich von 4xx oder 5xx zurückgibt, wird 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 Nightly> # cache-match> |