CacheStorage.match()

Experimental

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

Метод match() интерфейса CacheStorage (доступный через глобальное свойство caches) проверяет  является ли данный Request или строка url ключом для какого-либо хранимого Response. Метод возвращает Promise если Response найден, или undefined если нет ни одного совпадения.

Объекты Cache проверяются в порядке создания.

Note: caches.match() это метод для удобства в работе. Такая функциональность достигается вызовом cache.match() для каждого объекта cache (в порядке полученном запросом caches.keys() (en-US)) пока Response не будет найден.

Синтаксис

caches.match(request, options).then(function(response) {
  // Какие-либо действия с response
});

Параметры

request
Request для поиска.  Может быть объектом  Request или строкой URL.
options Необязательный
Объект, свойства которого определяют, как проверяется совпадение в операции сопоставления. Доступны следующие варианты:
  • ignoreSearchBoolean (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) свойство, определяющее, следует ли выполнять проверку заголовка VARY. Если установлено true, совпадения будут найдены, независимо от того, имеет ли Response заголовок VARY или нет. По умолчанию установлено false.
  • cacheName: Строка DOMString - имя кеша для поиска.

Возвращаемое значение

Метод возвращает Promise который разрешается совпавшим Response. Если ни одного совпадений не было найдено, promise разрешается с undefined.

Примеры

Это пример  из MDN sw-test example (см. sw-test running live). В данном примере, мы обрабатываем событие FetchEvent. Мы строим проверку ответа следующим образом:

  1. Проверяем, совпадения для запроса в CacheStorage используя CacheStorage.match(). Если совпадение найдено, возвращаем response.
  2. Если нет, открываем v1 объект кеша, используя метод open(), добавляем изначальный запрос в кеш используя Cache.put() и возвращаем клонированный объект запроса, используя return response.clone(). Это необходимо, потому что метод put() сохраняет в кеш тело запроса, изменяя, таким образом, изначальный запрос.
  3. Если произошла какая-либо ошибка (например, из-за проблем с сетью), возвращаем резервный ответ.
caches.match(event.request).then(function(response) {
  return response || fetch(event.request).then(function(r) {
    caches.open('v1').then(function(cache) {
      cache.put(event.request, r);
    });
    return r.clone();
  });
}).catch(function() {
  return caches.match('/sw-test/gallery/myLittleVader.jpg');
});

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

Specification Status Comment
Service Workers
Определение 'CacheStorage: match' в этой спецификации.
Рабочий черновик Initial definition.

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

BCD tables only load in the browser

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