CacheStorage.match()

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 Request est la clé d'un objet Cache object suivie par un objet CacheStorage et retourne une Promise qui renvoie la Response correspondante.

Les objets du cache sont cherchés par ordre d'insertion.

Note: CacheStorage.match() est une méthode utilitaire. Une fonctionnalité équivalente pour associer une entrée du cache peut être implémenté en ouvrant le cache avec CacheStorage.open(), en récupérant les entrées avec CacheStorage.keys(), et en filtrant celle voulue avec Cache.match().

Syntaxe

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

Retour

une Promise qui renvoie les Response correspondante.

Paramètres

request
La Request 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 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 qui, quand défini à true, empêche l'opération de rapprochement de valider le verbe http de la Request http (normalement, seulement GET et HEAD sont authorisés) La valeur par défaut est false.
  • ignoreVary: Un Boolean 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.

In Chrome only cacheName is supported.

Note: si un cacheName est défini dans les options et le cache n'existe pas, la promesse rejetée (cache.match() renvoie undefined si aucune réponse n'est trouvée).

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.
var response;
var cachedResponse = caches.match(event.request).catch(function() {
  return fetch(event.request);
}).then(function(r) {
  response = r;
  caches.open('v1').then(function(cache) {
    cache.put(event.request, response);
  });  
  return response.clone();
}).catch(function() {
  return caches.match('/sw-test/gallery/myLittleVader.jpg');
});

Spécifications

Spécification Statut Commentaire
Service Workers
La définition de 'CacheStorage' dans cette spécification.
Version de travail Définition initiale.

Compatibilités des navigateurs

Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari
Support de base 40.0[1] 44 (44)[2] Pas de support ? Pas de support
Fonctionnalité Android Android Webview Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
Support de base Pas de support Pas de support 44.0 (44) (Oui) (Oui) (Oui) 40.0 [1]

Voir aussi

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : nobe4
 Dernière mise à jour par : nobe4,