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
- имя кеша для поиска.
Возвращаемое значение
Примеры
Это пример из MDN sw-test example (см. sw-test running live). В данном примере, мы обрабатываем событие FetchEvent
. Мы строим проверку ответа следующим образом:
- Проверяем, совпадения для запроса в
CacheStorage
используяCacheStorage.match()
. Если совпадение найдено, возвращаем response. - Если нет, открываем
v1
объект кеша, используя методopen()
, добавляем изначальный запрос в кеш используяCache.put()
и возвращаем клонированный объект запроса, используяreturn response.clone()
. Это необходимо, потому что методput()
сохраняет в кеш тело запроса, изменяя, таким образом, изначальный запрос. - Если произошла какая-либо ошибка (например, из-за проблем с сетью), возвращаем резервный ответ.
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