CacheStorage: метод match()
Базовая Широко поддерживается
Эта функция хорошо отработана и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с апреля 2018 года.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или всех поддерживающих браузерах.
Примечание: Эта функция доступна в Web Workers.
Метод match() интерфейса CacheStorage проверяет, является ли заданный Request или строка URL ключом для сохранённого Response. Этот метод возвращает Promise для Response или Promise, который разрешается в undefined в случае отсутствия совпадения.
Вы можете получить доступ к CacheStorage через свойство Window.caches в окнах или через свойство WorkerGlobalScope.caches в рабочих процессах.
Cache объекты ищутся в порядке создания.
Примечание: caches.match() — это удобный метод. Эквивалентная функциональность заключается в вызове cache.match() для каждого кэша (в порядке, возвращаемом caches.keys()) до получения Response.
Синтаксис
match(request) match(request, options)
Параметры
request-
Request, который вы хотите сопоставить. Это может быть объектRequestили строка URL. optionsНеобязательно-
Объект, свойства которого управляют тем, как выполняется сопоставление в операции
match. Доступные параметры:ignoreSearch-
Логическое значение, определяющее, следует ли игнорировать строку запроса в URL при поиске совпадений. Например, если значение установлено в
true, часть?value=barURLhttp://foo.com/?value=barбудет проигнорирована при выполнении поиска. По умолчанию установлено значениеfalse. ignoreMethod-
Логическое значение. Если установлено в значение
true, операции сопоставления не будут проверять методRequesthttp(обычно разрешены толькоGETиHEAD). По умолчанию установлено значениеfalse. ignoreVary-
Логическое значение. Если установлено в значение
true, операция сопоставления не будет выполнять проверку заголовкаVARY. Другими словами, если URL совпадает, вы получите совпадение, независимо от того, есть ли у объектаResponseзаголовокVARYили нет. По умолчанию установлено значениеfalse. cacheName-
Строка, представляющая конкретный кэш, в котором нужно выполнить поиск.
Возвращаемое значение
Promise, который разрешается с соответствующим Response. Если соответствующий ответ на указанный запрос не найден, обещание разрешается со значением undefined.
Примеры
Этот пример взят из примера простого сервисного рабочего MDN на GitHub (смотрите рабочий пример сервисного рабочего). Здесь мы ждём срабатывания события FetchEvent. Мы создаём пользовательский ответ следующим образом:
- Проверить, найдено ли совпадение для запроса в
CacheStorageс помощьюCacheStorage.match(). Если да, то использовать его. - Если нет, открыть кэш
v1с помощьюopen(), поместить стандартный сетевой запрос в кэш с помощьюCache.put()и вернуть клон стандартного сетевого запроса с помощьюreturn response.clone(). Последнее необходимо, потому чтоput()потребляет тело ответа. - Если это не удастся (например, из-за отсутствия сетевого доступа), вернуть ответ по умолчанию.
self.addEventListener("fetch", (event) => {
event.respondWith(
caches.match(event.request).then((response) => {
// caches.match() always resolves
// but in case of success response will have value
if (response !== undefined) {
return response;
} else {
return fetch(event.request)
.then((response) => {
// response may be used only once
// we need to save clone to put one copy in cache
// and serve second one
let responseClone = response.clone();
caches.open("v1").then((cache) => {
cache.put(event.request, responseClone);
});
return response;
})
.catch(() => caches.match("/gallery/myLittleVader.jpg"));
}
}),
);
});
Спецификации
| Спецификация |
|---|
| Сервисные рабочие # cache-storage-match |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
match |
5440Параметр options поддерживает толькоignoreSearch, и cacheName. |
16 | 41 | 4127Параметр options поддерживает толькоignoreSearch, и cacheName. |
11.1 | 5440Параметр options поддерживает толькоignoreSearch, и cacheName. |
41 | 4127Параметр options поддерживает толькоignoreSearch, и cacheName. |
11.3 | 6.04.0Параметр options поддерживает толькоignoreSearch, и cacheName. |
5440Параметр options поддерживает толькоignoreSearch, и cacheName. |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/CacheStorage/match