CacheStorage.match()
Экспериментальная возможность: Это экспериментальная технология
Так как спецификация этой технологии ещё не стабилизировалась, смотрите таблицу совместимости по поводу использования в различных браузерах. Также заметьте, что синтаксис и поведение экспериментальной технологии может измениться в будущих версиях браузеров, вслед за изменениями спецификации.
Метод match() интерфейса CacheStorage (доступный через глобальное свойство caches) проверяет является ли данный Request или строка url ключом для какого-либо хранимого Response. Метод возвращает Promise если Response найден, или undefined если нет ни одного совпадения.
Объекты Cache проверяются в порядке создания.
Примечание: caches.match() это метод для удобства в работе. Такая функциональность достигается вызовом cache.match() для каждого объекта cache (в порядке полученном запросом caches.keys() (en-US)) пока Response не будет найден.
Синтаксис
caches.match(request, options).then(function(response) {
// Какие-либо действия с response
});
Параметры
- request
-
Requestдля поиска. Может быть объектомRequestили строкой URL. - options Необязательный
-
Объект, свойства которого определяют, как проверяется совпадение в операции сопоставления. Доступны следующие варианты:
ignoreSearch:Boolean(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- имя кеша для поиска.
Возвращаемое значение
Примеры
Это пример из MDN sw-test example (см. sw-test running live). В данном примере, мы обрабатываем событие FetchEvent. Мы строим проверку ответа следующим образом:
- Проверяем, совпадения для запроса в
CacheStorageиспользуяCacheStorage.match(). Если совпадение найдено, возвращаем response. - Если нет, открываем
v1объект кеша, используя методopen(), добавляем изначальный запрос в кеш используяCache.put()и возвращаем клонированный объект запроса, используяreturn response.clone(). Это необходимо, потому что методput()сохраняет в кеш тело запроса, изменяя, таким образом, изначальный запрос. - Если произошла какая-либо ошибка (например, из-за проблем с сетью), возвращаем резервный ответ.
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