CacheStorage.match()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2018.

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

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

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

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

Синтаксис

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

Параметры

request

Request для поиска. Может быть объектом Request или строкой URL.

options Необязательный

Объект, свойства которого определяют, как проверяется совпадение в операции сопоставления. Доступны следующие варианты:

  • ignoreSearch: Boolean свойство. Определяет, следует ли игнорировать параметры запроса в строке url или нет. Например, если установлено true, параметры ?value=bar запроса http://foo.com/?value=bar будут проигнорированы во время сопоставления. Значением по умолчанию является false.
  • ignoreMethod: Boolean свойство. Когда установлено true, предотвращает проверку http метода запроса Request (обычно разрешены только GET и HEAD.) По умолчанию установлено false.
  • ignoreVary: Boolean свойство, определяющее, следует ли выполнять проверку заголовка 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. Если произошла какая-либо ошибка (например, из-за проблем с сетью), возвращаем резервный ответ.
js
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
Service Workers
# cache-storage-match

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

BCD tables only load in the browser

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