Cache: put() 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 put()
Methode des Cache
-Interfaces ermöglicht das Hinzufügen von Schlüssel/Wert-Paaren zum aktuellen Cache
-Objekt.
Häufig möchten Sie einfach eine oder mehrere Anfragen mit fetch()
ausführen und das Ergebnis direkt zu Ihrem Cache hinzufügen. In solchen Fällen ist es besser, Cache.add()
/Cache.addAll()
zu verwenden, da dies Kurzbefehle für eine oder mehrere solcher Operationen sind.
fetch(url).then((response) => {
if (!response.ok) {
throw new TypeError("Bad response status");
}
return cache.put(url, response);
});
Hinweis:>put()
überschreibt jedes zuvor im Cache gespeicherte Schlüssel/Wert-Paar, das der Anfrage entspricht.
Hinweis:>Cache.add
/Cache.addAll
speichern keine Antworten mit Response.status
-Werten, die nicht im 200er-Bereich liegen, wohingegen Cache.put
es ermöglicht, jedes Anfrage-/Antwortpaar zu speichern. Daher können Cache.add
/Cache.addAll
nicht verwendet werden, um undurchsichtige Antworten zu speichern, während Cache.put
dies kann.
Syntax
put(request, response)
Parameter
Rückgabewert
Ein Promise
, der mit undefined
aufgelöst wird.
Ausnahmen
TypeError
-
Wird zurückgegeben, wenn das URL-Schema nicht
http
oderhttps
ist.
Beispiele
Dieses Beispiel stammt aus dem MDN simple-service-worker example (siehe simple-service-worker live ausführen).
Hier warten wir auf das Auslösen eines FetchEvent
. Wir konstruieren eine benutzerdefinierte Antwort folgendermaßen:
- Überprüfen Sie, ob ein Treffer für die Anfrage im
CacheStorage
mitCacheStorage.match()
gefunden wird. Falls ja, dienen Sie diese aus. - Falls nicht, öffnen Sie den
v1
Cache mitopen()
, legen die Standardnetzwerkanfrage im Cache mitCache.put()
ab und geben einen Klon der Standardnetzwerkantwort mitreturn response.clone()
zurück. Ein Klon ist notwendig, daput()
den Antwortkörper verbraucht. - Falls dies fehlschlägt (z. B. weil das Netzwerk ausgefallen ist), geben Sie eine Ersatzantwort zurück.
let response;
const cachedResponse = caches
.match(event.request)
.then((r) => (r !== undefined ? r : fetch(event.request)))
.then((r) => {
response = r;
caches.open("v1").then((cache) => cache.put(event.request, response));
return response.clone();
})
.catch(() => caches.match("/gallery/myLittleVader.jpg"));
Spezifikationen
Specification |
---|
Service Workers # cache-put |