Cache.match()
=============

**Экспериментальная возможность:** **Это экспериментальная технология**  
Так как спецификация этой технологии ещё не стабилизировалась, смотрите таблицу совместимости по поводу использования в различных браузерах. Также заметьте, что синтаксис и поведение экспериментальной технологии может измениться в будущих версиях браузеров, вслед за изменениями спецификации.

Метод **`match()`** интерфейса `Cache` возвращает `Promise`, который разрешается в `Response`, ассоциированный с первым совпадающим запросом в объекте `Cache`. Если совпадений не найдено, `Promise` разрешается в `undefined`.

Синтаксис
---------


```js
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` (en-US), которое указывает следует ли игнорировать строку запроса в url. Например, если оно установлено в `true, часть` `?value=bar` запроса `http://foo.com/?value=bar` будет проигнорирована при поиске соответствий ключа. По умолчанию равно `false`.
* `ignoreMethod`: Булево значение `Boolean` (en-US), которое, когда равно `true`, предотвращает проверку `http` метода для запроса `Request` при выполнении сопоставлений ключа (обычно разрешены лишь `GET` и `HEAD`). По умолчанию равно `false`.
* `ignoreVary`: Булево значение `Boolean` (en-US), которое, когда установлено в `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()` не будет вызван.


```js
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);
        });
      }),
    );
  }
});
```

Спецификации
------------

| Specification |
| --- |
| Service Workers # cache-match |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* Использование сервис воркеров (en-US)
* `Cache`
* `WorkerGlobalScope.caches` (en-US)