--- title: Cache.match() slug: Web/API/Cache/match translation_of: Web/API/Cache/match ---
{{APIRef("Service Workers API")}}{{SeeCompatTable}}
Метод match()
интерфейса {{domxref("Cache")}} возвращает {{jsxref("Promise")}}, который разрешается в {{domxref("Response")}}, ассоциированный с первым совпадающим запросом в объекте {{domxref("Cache")}}. Если совпадений не найдено, {{jsxref("Promise")}} разрешается в {{jsxref("undefined")}}.
cache.match(request,{options}).then(function(response) { //сделать что-нибудь с ответом });
{{jsxref("Promise")}}, который разрешается в первый {{domxref("Response")}}, который совпадает с запросом или в {{jsxref("undefined")}}, если совпадений не найдено.
Замечание: Cache.match()
в основном идентичен {{domxref("Cache.matchAll()")}}, за исключением того, что Cache.match()
разрешается в response[0]
(первый совпадающий ответ) вместо response[]
(массив со всеми совпадающими ответами).
match
. Допустимые значения:
ignoreSearch
: Булево значение {{domxref("Boolean")}}, которое указывает следует ли игнорировать строку запроса в url. Например, если оно установлено в true, часть
?value=bar
запроса http://foo.com/?value=bar
будет проигнорирована при поиске соответствий ключа. По умолчанию равно false
.ignoreMethod
: Булево значение {{domxref("Boolean")}}, которое, когда равно true
, предотвращает проверку http
метода для запроса {{domxref("Request")}} при выполнении сопоставлений ключа (обычно разрешены лишь GET
и HEAD
). По умолчанию равно false
.ignoreVary
: Булево значение {{domxref("Boolean")}}, которое, когда установлено в true,
указывает операции сопоставления ключа не проводить проверку соответствия заголовка VARY
— т.е., если URL совпадает, вы получите соответствие независимо от того, установлен ли на объекте {{domxref("Response")}} заголовок VARY
. По умолчанию равно false
.cacheName
: Строка {{domxref("DOMString")}}, задающая определенный кеш для поиска. Заметьте, что этот параметр игнорируется методом Cache.match()
.В Chrome поддерживается лишь cacheName
.
Код взят примера из примера пользовательская оффлайн страница (живой пример).
Следующий пример использует кеш для предоставления данных, когда запрос не удался. Выражение catch()
выполняется когда вызов fetch()
возбуждает исключение. Внутри выражения catch()
, match()
используется для возврата корректного ответа.
В этом примере, мы решили что кешироваться будут лишь HTML-документы полученные с помощью GET-запроса. Если условие if()
равно false, то обработчик не будет вмешиваться в ответ. Если зарегистрированы другие обработчики получения данных, то у них будет шанс вызвать event.respondWith()
. Если ни один из обработчиков не вызовет event.respondWith()
, запрос будет обработан браузером, как это было бы сделано без участия сервис воркера. Если fetch()
возвращает валидный HTTP ответ к кодом из диапазона 4xx или 5xx, то метод catch()
не будет вызван.
self.addEventListener('fetch', function(event) { // Мы хотим выполнить лишь event.respondWith() если это GET-запрос HTML-документа. 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); }); }) ); } });
Спецификация | Статус | Комментарий |
---|---|---|
{{SpecName('Service Workers', '#cache', 'Cache')}} | {{Spec2('Service Workers')}} | Initial definition. |
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Базовая поддержка | {{CompatChrome(40.0)}} [1] | {{CompatGeckoDesktop(39)}}[2] | {{CompatNo}} | 24 | {{CompatNo}} |
Feature | Android | Android Webview | Firefox Mobile (Gecko) | Firefox OS | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|---|
Базовая поддержка | {{CompatNo}} | {{CompatNo}} | {{CompatGeckoMobile(39)}} | {{CompatUnknown}} | {{CompatNo}} | {{CompatUnknown}} | {{CompatNo}} | {{CompatChrome(40.0)}} [1] |
ignoreSearch и
cacheName
.