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 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 imCache
zu finden. Dies kann einRequest
Objekt oder ein URL-String 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 der Abfrage-String in der URL ignoriert werden soll. Zum Beispiel, wenn auf
true
gesetzt, würde der?value=bar
Teil vonhttp://foo.com/?value=bar
bei der Durchführung einer Übereinstimmung ignoriert werden. Standardmäßigfalse
. ignoreMethod
-
Ein boolescher Wert, der, wenn auf
true
gesetzt, verhindert, dass Matching-Operationen diehttp
-Methode desRequest
validieren (normalerweise sind nurGET
undHEAD
erlaubt). Standardmäßigfalse
. ignoreVary
-
Ein boolescher Wert, der, wenn auf
true
gesetzt, der Matching-Operation anweist, keineVARY
-Header-Übereinstimmung durchzuführen — d.h. wenn die URL übereinstimmt, erhalten Sie eine Übereinstimmung, unabhängig davon, ob dasResponse
Objekt einenVARY
-Header hat. Standardmäßigfalse
.
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.
Note:
Cache.match()
ist im Grunde identisch mitCache.matchAll()
, außer dass es anstelle der Auflösung mit einem Array aller übereinstimmenden Antworten nur mit der ersten übereinstimmenden Antwort aufgelöst wird (d.h.response[0]
).
Beispiele
Dieses Beispiel stammt aus dem individuellen Offline-Seiten Beispiel (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 wirft. Innerhalb der catch()
Klausel wird match()
verwendet, um die korrekte 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, dann 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 kein Service Worker beteiligt wäre. Wenn fetch()
eine gültige HTTP-Antwort mit einem Antwortcode im Bereich 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 # cache-match |