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.
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
: UnBoolean
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
dehttps://foo.com/?value=bar
sera ignoré lors d'un rapporchement. La valeur par défaut estfalse
.ignoreMethod
: UnBoolean
qui, quand défini àtrue
, empêche l'opération de rapprochement de valider le verbe http de laRequest
http
(normalement, seulementGET
etHEAD
sont authorisés) La valeur par défaut estfalse
.ignoreVary
: UnBoolean
qui, quand défini àtrue
, dit à l'opération de rapprochement de ne pas faire le rapprochement avec le headerVARY
. En d'autres termes, si une URL est sélectionnée elle sera conservée indépemment de la présence du headerVARY
. La valeur par défaut estfalse
.cacheName
: UnDOMString
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()
renvoieundefined
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:
- Vérifier si une correspondance pour la requète est trouvée dans le
CacheStorage
en utilisantCacheStorage.match
. Si oui, la servir. - Si non, ouvrire le cache
v1
avecopen()
, mettre le réseau par défaut dans le cache avecCache.put
et retourner un clone du réseau par défaut en utilisantreturn response.clone()
— obligatoire carput()
détruit le corps de la réponse. - 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] |
- [1] Le paramètre option ne supporte que
cacheName
. - [2] Les services workers (et Push) on été désactivés dans la Sortie du support étendu de Firefox 45 (ESR.)