CacheStorage: match() Methode
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Hinweis: Dieses Feature ist verfügbar in Web Workers.
Die match()
Methode des CacheStorage
-Interfaces überprüft, ob ein gegebener Request
oder eine URL-Zeichenkette 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 Reihenfolge ihrer Erstellung durchsucht.
Note:
caches.match()
ist eine Komfortmethode. Eine gleichwertige Funktionalität besteht darin,cache.match()
auf jedem Cache aufzurufen (in der Reihenfolge, die voncaches.keys()
zurückgegeben wird), bis eineResponse
zurückgegeben wird.
Syntax
match(request)
match(request, options)
Parameter
request
-
Der
Request
, den Sie abgleichen möchten. Dies kann einRequest
-Objekt oder eine URL-Zeichenkette sein. options
Optional-
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 festlegt, ob der Abgleichsprozess die Abfragezeichenfolge in der URL ignorieren soll. Wenn beispielsweise
true
gesetzt ist, würde der Teil?value=bar
vonhttp://foo.com/?value=bar
bei der Durchführung eines Abgleichs ignoriert werden. Standardmäßig ist dieser auffalse
gesetzt. ignoreMethod
-
Ein boolescher Wert, der, wenn auf
true
gesetzt, verhindert, dass Abgleichsoperationen diehttp
-Methode desRequest
validieren (normalerweise sind nurGET
undHEAD
erlaubt). Standardmäßig ist dieser auffalse
gesetzt. ignoreVary
-
Ein boolescher Wert, der, wenn auf
true
gesetzt, der Abgleichsoperation vorschreibt, keineVARY
-Header-Überprüfung durchzuführen. Mit anderen Worten, wenn die URL übereinstimmt, erhalten Sie einen Treffer, unabhängig davon, ob dasResponse
-Objekt einenVARY
-Header hat oder nicht. Standardmäßig ist dieser auffalse
gesetzt. cacheName
-
Eine Zeichenkette, die einen spezifischen Cache repräsentiert, innerhalb dessen gesucht werden soll.
Rückgabewert
Beispiele
Dieses Beispiel stammt aus dem MDN einfaches Service Worker Beispiel (siehe einfacher Service Worker live).
Hier warten wir auf ein FetchEvent
. Wir konstruieren eine benutzerdefinierte Antwort wie folgt:
- Überprüfen, ob ein Treffer für die Anfrage im
CacheStorage
mitCacheStorage.match()
gefunden wird. Falls ja, dieser wird verwendet. - Wenn nicht, öffnen Sie den
v1
Cache mitopen()
, legen Sie die Standardnetzwerkanfrage mitCache.put()
in den Cache und geben Sie mitreturn response.clone()
einen Klon der Standardnetzwerkanfrage zurück. Letzteres ist notwendig, daput()
den Antwortkörper verbraucht. - Wenn dies fehlschlägt (z.B. weil das Netzwerk ausgefallen ist), geben Sie eine Ersatzantwort 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;
} else {
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 # cache-storage-match |
Browser-Kompatibilität
BCD tables only load in the browser