FetchEvent: свойство preloadResponse
Базовая Широко поддерживается
Эта функция хорошо отработана и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с апреля 2018 года.
Примечание: Эта функция доступна только в Service Workers.
Только для чтения свойство preloadResponse интерфейса FetchEvent возвращает Promise, который разрешается до навигационного предзагруженного Response, если была вызвана предварительная загрузка навигации, или undefined в противном случае.
Предварительная загрузка навигации запускается, если предварительная загрузка навигации включена, запрос является GET запросом, и запрос является запросом навигации (генерируется браузером при загрузке страниц и фреймов).
Сервисный рабочий может ожидать этот промис в своем обработчике события fetch, чтобы отслеживать завершение запроса fetch, выполненного во время запуска сервисного работника.
Значение
Примеры
Этот фрагмент кода взят из Ускорение сервисного работника с помощью предварительной загрузки навигации.
Обработчик событий onfetch слушает событие fetch. При срабатывании обработчик вызывает FetchEvent.respondWith() для передачи промиса обратно управляемой странице. Этот промис будет разрешен с запрошенным ресурсом.
Если в объекте Cache есть соответствующий запрос URL, то код возвращает промис для получения ответа из кэша. Если совпадений в кэше нет, код возвращает промис в preloadResponse. Если нет соответствующего кэша или предзагруженного ответа, код получает ответ из сети и возвращает связанный промис.
addEventListener("fetch", (event) => {
event.respondWith(
(async () => {
// Respond from the cache if we can
const cachedResponse = await caches.match(event.request);
if (cachedResponse) return cachedResponse;
// Else, use the preloaded response, if it's there
const response = await event.preloadResponse;
if (response) return response;
// Else try the network.
return fetch(event.request);
})(),
);
});
Спецификации
| Спецификация |
|---|
| Сервисные рабочие # fetch-event-preloadresponse |
Совместимость с браузерами
| Десктоп | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
preloadResponse |
59 | 18 | 99 | 46 | 15.4 | 59 | 99 | 43 | 15.4 | 7.0 | 59 |
См. также
© 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/FetchEvent/preloadResponse