--- 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")}}