Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

CacheStorage: 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 CacheStorage-Interfaces überprüft, ob eine gegebene Request- oder URL-Zeichenfolge 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 Erstellungsreihenfolge durchsucht.

Hinweis: caches.match() ist eine Komfortmethode. Eine gleichwertige Funktionalität besteht darin, cache.match() für jeden Cache (in der Reihenfolge, die von caches.keys() zurückgegeben wird) aufzurufen, bis eine Response zurückgegeben wird.

Syntax

js
match(request)
match(request, options)

Parameter

request

Die Request, die Sie abgleichen möchten. Dies kann ein Request-Objekt oder eine URL-Zeichenfolge 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 angibt, ob der Matching-Prozess die Abfragezeichenfolge in der URL ignorieren soll. Wenn zum Beispiel auf true gesetzt, würde der ?value=bar Teil von https://example.com/?value=bar beim Matching ignoriert. Standard ist false.

ignoreMethod

Ein boolescher Wert, der, wenn auf true gesetzt, verhindert, dass Matching-Operationen die http-Methode der Request validieren (normalerweise sind nur GET und HEAD erlaubt). Standard ist false.

ignoreVary

Ein boolescher Wert, der, wenn auf true gesetzt, die Matching-Operation anweist, kein VARY Header-Matching durchzuführen. Mit anderen Worten: Wenn die URL übereinstimmt, erhalten Sie einen Treffer, unabhängig davon, ob das Response-Objekt einen VARY-Header hat oder nicht. Standard ist false.

cacheName

Eine Zeichenkette, die einen bestimmten Cache darstellt, in dem gesucht werden soll.

Rückgabewert

Ein Promise, das die übereinstimmende Response auflöst. Wenn keine übereinstimmende Antwort auf die angegebene Anfrage gefunden wird, wird das Promise mit undefined aufgelöst.

Beispiele

Dieses Beispiel stammt aus dem MDN einfachen Service-Worker-Beispiel (siehe einfacher Service Worker live). Hier warten wir, bis ein FetchEvent ausgelöst wird. Wir konstruieren eine benutzerdefinierte Antwort wie folgt:

  1. Prüfen, ob ein Treffer für die Anfrage in der CacheStorage mit CacheStorage.match() gefunden wird. Falls ja, dienen Sie diese.
  2. Falls nicht, öffnen Sie den v1 Cache mit open(), setzen die Standardnetzwerkanfrage in den Cache mit Cache.put() und geben Sie einen Klon der Standardnetzwerkanfrage mittels return response.clone() zurück. Das Letzte ist notwendig, da put() den Antwortkörper verbraucht.
  3. Wenn dies fehlschlägt (z. B. weil das Netzwerk ausgefallen ist), geben Sie eine Fallback-Antwort zurück.
js
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;
      }
      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 Nightly
# cache-storage-match

Browser-Kompatibilität

Siehe auch