Cette traduction est incomplète. Aidez à traduire cet article depuis l'anglais.
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 méthode match()
de l'interface Cache
retourne une Promise
qui est résolue en une Response
associée à la première requête qui match dans l'objet Cache
. Si aucune requête n'est trouvée, la Promise
est résolue en undefined
.
Syntaxe
cache.match(request,{options}).then(function(response) { //do something with the response });
Retour
Une Promise
qui est résolue en la première Response
qui match la requête, ou en undefined
si aucune requête n'est trouvée.
Note: Cache.match()
est quasiment identique à Cache.matchAll()
, si ce n'est qu'elle est résolue en response[0]
(la première réponse qui matche) plutôt que response[]
(un tableau de toutes les réponses qui matchent).
Paramètres
- request
- La
Request
à trouver dans leCache
. - options Facultatif
- Un objet dont les paramètres contrôlent comment le matching est effectué lors de l'opération de
delete
. Les options disponibles sont :ignoreSearch
: UnBoolean
qui spécifie si le matching doit ignorer ou non la query string dans l'url. Si mis àtrue
, la partie?value=bar
de l'urlhttps://foo.com/?value=bar
sera ignorée lors du matching. Est àfalse
par défaut.ignoreMethod
: UnBoolean
qui, quand mis àtrue
, empêche les opérations de matching de valider la méthodeHTTP
de laRequest
(en temps normal, seulesGET
etHEAD
sont autorisées.) Est àfalse
par défaut.ignoreVary
: UnBoolean
qui, quand mis àtrue,
indique à l'opération de matching de ne pas effectuer le matchingVARY
des header. En d'autres termes, si l'URL correspond, un match sera obtenu peu importe que laResponse
ait un headerVARY
ou non. Est àfalse
par défaut.cacheName
: UneDOMString
qui représente un cache spécifique où effectuer la recherche. A noter que cette option est ignorée parCache.match()
Exemples
Cet exemple est extrait de l'exemple Custom offline page (demo).
L'exemple suivant se sert d'un cache pour fournir les données demandées même quand une requête échoue. Une clause catch()
est déclenchée quand l'appel à fetch()
lève une exception. A l'intérieur de la clause catch()
, match()
est utilisée to pour retourner la réponse appropriée.
Dans cet exemple, nous avons décidé que seul les documents HTML récupérés via le verbe HTTP GET seront mis en cache. Si notre condition if()
est false, le gestionnaire fetch n'intercepte pas la requête. Si d'autres gestionnaires fetch sont enregistrés, ils ont une occasion d'appeler event.respondWith()
. Si aucun gestionnaire fetch ne décide d'appeler event.respondWith()
, la requête sera gérée par le navigateur comme si les service workers n'avaient pas existé. Si fetch()
retourne une réponse HTTP valide avec un code réponse dans les 4xx ou 5xx, la clause catch()
ne sera PAS appelée.
self.addEventListener('fetch', function(event) { // We only want to call event.respondWith() if this is a GET request for an HTML document. if (event.request.method === 'GET' && event.request.headers.get('accept').indexOf('text/html') !== -1) { console.log('Handling fetch event for', event.request.url); event.respondWith( fetch(event.request).catch(function(e) { console.error('Fetch failed; returning offline page instead.', e); return caches.open(OFFLINE_CACHE).then(function(cache) { return cache.match(OFFLINE_URL); }); }) ); } });
Spécifications
Specification | Statut | Commentaire |
---|---|---|
Service Workers La définition de 'Cache' dans cette spécification. |
Version de travail | Définition initiale. |
Compatibilités des navigateurs
Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Support de base | 40.0 [1] | 39 (39) | Pas de support | 24 | Pas de support |
Fonctionnalité | Android | Android Webview | Firefox Mobile (Gecko) | Firefox OS | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|---|
Support de base | Pas de support | Pas de support | 39.0 (39) | ? | Pas de support | ? | Pas de support | 40.0 [1] |
[1] Le paramètre options ne supporte que cacheName
.