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 imCache
zu finden. Dies kann einRequest
-Objekt oder eine URL-Zeichenfolge sein. options
Optional-
Ein Objekt, das Optionen für den
match
Vorgang festlegt. Die verfügbaren Optionen sind:ignoreSearch
-
Ein boolescher Wert, der angibt, ob die Abfragezeichenfolge in der URL ignoriert werden soll. Wenn beispielsweise auf
true
gesetzt, würde der?value=bar
Teil vonhttp://foo.com/?value=bar
bei der Durchführung einer Übereinstimmung ignoriert werden. Standardmäßig ist esfalse
. ignoreMethod
-
Ein boolescher Wert, der, wenn auf
true
gesetzt, verhindert, dass der Abgleichsvorgang diehttp
Methode vonRequest
validiert (normalerweise sind nurGET
undHEAD
erlaubt). Standardmäßig ist esfalse
. ignoreVary
-
Ein boolescher Wert, der, wenn auf
true
gesetzt, dem Abgleichsvorgang mitteilt, dass keinVARY
Header-Abgleich durchgeführt werden soll — d.h. wenn die URL übereinstimmt, erhalten Sie eine Übereinstimmung, unabhängig davon, ob dasResponse
-Objekt einenVARY
Header 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 |