This page was translated from English by the community. Learn more and join the MDN Web Docs community.
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 апрель 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: СтрокаString- имя кеша для поиска.
Возвращаемое значение
Метод возвращает Promise который разрешается совпавшим Response. Если ни одного совпадений не было найдено, promise разрешается с undefined.
Примеры
Это пример из 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 Nightly> # cache-storage-match> |
Совместимость с браузерами
Enable JavaScript to view this browser compatibility table.