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: СтрокаDOMString- имя кеша для поиска.
Возвращаемое значение
Метод возвращает 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> # cache-storage-match> |
Совместимость с браузерами
Loading…