CacheStorage.match()
====================

**Expérimental:** **Cette fonction est expérimentale**  
Puisque cette fonction est toujours en développement dans certains navigateurs, veuillez consulter le tableau de compatibilité pour les préfixes à utiliser selon les navigateurs.  
Il convient de noter qu'une fonctionnalité expérimentale peut voir sa syntaxe ou son comportement modifié dans le futur en fonction des évolutions de la spécification.

La fonction **`match()`** de l'interface `CacheStorage` qu'une `Requête` est la clé d'un objet `Cache` object suivie par un objet `CacheStorage` et retourne une `Promesse` qui renvoie la `Réponse` correspondante.

Vous pouvez accéder à `CacheStorage` via la propriété globale `caches`.

Les objets `Cache` sont cherchés par ordre de création.

**Note :** `caches.match()` est une méthode de commodité. Une fonctionnalité équivalente consiste à appeler `cache.match()` sur chaque cache (dans l'ordre renvoyé par `caches.keys()`) jusqu'à ce qu'une `Réponse` soit renvoyée.

Syntaxe
-------


```js
caches.match(request, { options }).then(function (response) {
  // faire quelque-chose avec la requête et la réponse
});
```

### Paramètres

request

La `Requête` recherchée.

options Facultatif

Un objet dont les propriétés contrôlent comment la correspondance est fait avec l'opération `match`. Les options disponible sont:

* `ignoreSearch`: Un `Boolean` (en-US) qui détermine si le preocessus de rapprochement doit ignorer la chaîne de requête dans l'url. Défini à `true`, la partie `?value=bar` de `http://foo.com/?value=bar` sera ignoré lors d'un rapporchement. La valeur par défaut est `false`.
* `ignoreMethod`: Un `Boolean` (en-US) qui, quand défini à `true`, empêche l'opération de rapprochement de valider le verbe http de la `Requête` `http` (normalement, seulement `GET` et `HEAD` sont authorisés) La valeur par défaut est `false`.
* `ignoreVary`: Un `Boolean` (en-US) qui, quand défini à `true`, dit à l'opération de rapprochement de ne pas faire le rapprochement avec le header `VARY`. En d'autres termes, si une URL est sélectionnée elle sera conservée indépemment de la présence du header `VARY`. La valeur par défaut est `false`.
* `cacheName`: Un `DOMString` qui représente le cache dans lequel on recherche.

### Valeur retournée

Une `Promesse` qui renvoie les `Réponses` correspondante.

Exemples
--------

Cet exemple est tiré du MDN sw-test example (voir sw-test running live). Nous attendons pour un évènement `FetchEvent` et nous construisons une réponse comme suit:

1. Vérifier si une correspondance pour la requète est trouvée dans le `CacheStorage` en utilisant `CacheStorage.match`. Si oui, la servir.
2. Si non, ouvrire le cache `v1` avec `open()`, mettre le réseau par défaut dans le cache avec `Cache.put` et retourner un clone du réseau par défaut en utilisant `return response.clone()` — obligatoire car `put()` détruit le corps de la réponse.
3. Si ceci échoue (e.g., parce que le réseau est inactif), retourner une réponse de secours.


```js
self.addEventListener("fetch", function (event) {
  event.respondWith(
    caches.match(event.request).then(function (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(function (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(function (cache) {
              cache.put(event.request, responseClone);
            });
            return response;
          })
          .catch(function () {
            return caches.match("/sw-test/gallery/myLittleVader.jpg");
          });
      }
    }),
  );
});
```

Spécifications
--------------

| Specification |
| --- |
| Service Workers # cache-storage-match |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* Utiliser les Service Workers
* `Cache`
* `caches`