Эта статья нуждается в редакционном обзоре. Как вы можете помочь.
Это экспериментальная технология
Так как спецификация этой технологии ещё не стабилизировалась, смотрите таблицу совместимости по поводу использования в различных браузерах. Также заметьте, что синтаксис и поведение экспериментальной технологии может измениться в будущих версиях браузеров, вслед за изменениями спецификации.
Метод match()
интерфейса Cache
возвращает Promise
, который разрешается в Response
, ассоциированный с первым совпадающим запросом в объекте Cache
. Если совпадений не найдено, Promise
разрешается в undefined
.
Синтаксис
cache.match(request,{options}).then(function(response) { //сделать что-нибудь с ответом });
Возвращаемое значение
Promise
, который разрешается в первый Response
, который совпадает с запросом или в undefined
, если совпадений не найдено.
Замечание: Cache.match()
в основном идентичен Cache.matchAll()
, за исключением того, что Cache.match()
разрешается в response[0]
(первый совпадающий ответ) вместо response[]
(массив со всеми совпадающими ответами).
Параметры
- request
- Запрос
Request
, который вы пытаетесь найти вCache
. - options Необязательный
- Объект, который задает параметры для операции
match
. Допустимые значения:ignoreSearch
: Булево значениеBoolean
, которое указывает следует ли игнорировать строку запроса в url. Например, если оно установлено вtrue, часть
?value=bar
запросаhttps://foo.com/?value=bar
будет проигнорирована при поиске соответствий ключа. По умолчанию равноfalse
.ignoreMethod
: Булево значениеBoolean
, которое, когда равноtrue
, предотвращает проверкуhttp
метода для запросаRequest
при выполнении сопоставлений ключа (обычно разрешены лишьGET
иHEAD
). По умолчанию равноfalse
.ignoreVary
: Булево значениеBoolean
, которое, когда установлено вtrue,
указывает операции сопоставления ключа не проводить проверку соответствия заголовкаVARY
— т.е., если URL совпадает, вы получите соответствие независимо от того, установлен ли на объектеResponse
заголовокVARY
. По умолчанию равноfalse
.cacheName
: Строка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); }); }) ); } });
Спецификации
Спецификация | Статус | Комментарий |
---|---|---|
Service Workers Определение 'Cache' в этой спецификации. |
Рабочий черновик | Initial definition. |
Совместимость с браузерами
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Базовая поддержка | 40.0 [1] | 39 (39)[2] | Нет | 24 | Нет |
Feature | Android | Android Webview | Firefox Mobile (Gecko) | Firefox OS | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|---|
Базовая поддержка | Нет | Нет | 39.0 (39) | ? | Нет | ? | Нет | 40.0 [1] |
- [1] Параметр options поддерживает только
ignoreSearch и
cacheName
. - [2] Сервис воркеры (и Push) были отключены в Firefox 45 Extended Support Release (ESR.)