Кэш: метод match()
Базовая Широко доступная
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с апреля 2018 года.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS), в некоторых или во всех поддерживающих браузерах.
Примечание: Эта функция доступна в Web Workers.
Метод match() интерфейса Cache возвращает Promise, который разрешается на Response, связанный с первым соответствующим запросом в объекте Cache. Если соответствие не найдено, Promise разрешается на undefined.
Синтаксис
match(request) match(request, options)
Параметры
request-
Запрос
Request, для которого вы пытаетесь найти ответы в кэшеCache. Это может быть объект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.
Возвращаемое значение
A Promise, который разрешается на первый Response, соответствующий запросу, или на undefined, если соответствие не найдено.
Примечание: Cache.match() в основном идентичен Cache.matchAll(), за исключением того, что он разрешается не массивом всех соответствующих ответов, а только первым соответствующим ответом (то есть, response[0]).
Примеры
Этот пример взят из примера настраиваемой страницы офлайн (живая демонстрация). Он использует кэш для предоставления выбранных данных, когда запрос терпит неудачу. Блок catch() срабатывает, когда вызов fetch() выбрасывает исключение. Внутри блока catch(), используется match() для возврата правильного ответа.
В этом примере в кэш будут помещены только HTML-документы, полученные с помощью HTTP-глагола GET. Если наше условие if () ложно, этот обработчик fetch не будет перехватывать запрос. Если зарегистрированы другие обработчики fetch, у них будет возможность вызвать event.respondWith(). Если ни один обработчик fetch не вызовет event.respondWith(), запрос будет обработан браузером так, как если бы служба рабочего процесса не участвовала. Если fetch() возвращает допустимый HTTP-ответ с кодом ответа в диапазоне 4xx или 5xx, функция catch() НЕ будет вызвана.
self.addEventListener("fetch", (event) => {
// We only want to call event.respondWith() if this is a GET request for an HTML document.
if (
event.request.method === "GET" &&
event.request.headers.get("accept").includes("text/html")
) {
console.log("Handling fetch event for", event.request.url);
event.respondWith(
fetch(event.request).catch((e) => {
console.error("Fetch failed; returning offline page instead.", e);
return caches
.open(OFFLINE_CACHE)
.then((cache) => cache.match(OFFLINE_URL));
}),
);
}
});
Спецификации
| Спецификация |
|---|
| Сервис-воркеры # cache-match |
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
match |
43 | 16 | 41 | 30 | 11.1 | 43 | 41 | 30 | 11.3 | 4.0 | 43 |
См. также
© 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/Cache/match