--- title: CacheStorage.match() slug: Web/API/CacheStorage/match tags: - API - CacheStorage - Service Workers - Service worker API - ServiceWorker - match - Экспериментальная функция translation_of: Web/API/CacheStorage/match ---
{{APIRef("Service Workers API")}}{{SeeCompatTable}}
Метод match() интерфейса {{domxref("CacheStorage")}} (доступный через глобальное свойство caches) проверяет является ли данный {{domxref("Request")}} или строка url ключом для какого-либо хранимого {{domxref("Response")}}. Метод возвращает {{jsxref("Promise")}} если {{domxref("Response")}} найден, или undefined если нет ни одного совпадения.
Объекты Cache проверяются в порядке создания.
caches.match(request, options).then(function(response) {
// Какие-либо действия с response
});
ignoreSearch: {{domxref("Boolean")}} свойство. Определяет, следует ли игнорировать параметры запроса в строке url или нет. Например, если установлено true, параметры ?value=bar запроса http://foo.com/?value=bar будут проигнорированы во время сопоставления. Значением по умолчанию является false.ignoreMethod: {{domxref("Boolean")}} свойство. Когда установлено true, предотвращает проверку http метода запроса {{domxref("Request")}} (обычно разрешены только GET и HEAD.) По умолчанию установлено false.ignoreVary: {{domxref("Boolean")}} свойство, определяющее, следует ли выполнять проверку заголовка VARY. Если установлено true, совпадения будут найдены, независимо от того, имеет ли {{domxref("Response")}} заголовок VARY или нет. По умолчанию установлено false.cacheName: Строка {{domxref("DOMString")}} - имя кеша для поиска.Метод возвращает {{jsxref("Promise")}} который разрешается совпавшим {{domxref("Response")}}. Если ни одного совпадений не было найдено, promise разрешается с undefined.
Это пример из MDN sw-test example (см. sw-test running live). В данном примере, мы обрабатываем событие {{domxref("FetchEvent")}}. Мы строим проверку ответа следующим образом:
v1 объект кеша, используя метод open(), добавляем изначальный запрос в кеш используя {{domxref("Cache.put","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 | Status | Comment |
|---|---|---|
| {{SpecName('Service Workers', '#dom-cachestorage-match', 'CacheStorage: match')}} | {{Spec2('Service Workers')}} | Initial definition. |
{{Compat("api.CacheStorage.match")}}