Использовать Service Worker для перехвата запросов при первой загрузке моего сайта?
TL; DR-я хочу, чтобы мой сервисный работник активировался сразу после первого посещения моего сайта, а не после первого обновления.
детали:
Я создал прогрессивное веб-приложение с помощью service worker, но заметил, что при первой загрузке (когда установлен SW) он не будет перехватывать любые сетевые запросы, пока пользователь не обновит страницу.
есть ли что-нибудь, что я могу сделать, чтобы работник службы начал немедленно перехватывать запросы после его установки?
1 ответов
вы действительно можете, используя комбинацию skipWaiting
и clients.claim
, как показано ниже.
это заставит работника службы немедленно взять под контроль сетевые запросы со страницы.
self.addEventListener('install', event => {
// Bypass the waiting lifecycle stage,
// just in case there's an older version of this SW registration.
event.waitUntil(self.skipWaiting());
});
self.addEventListener('activate', event => {
// Take control of all pages under this SW's scope immediately,
// instead of waiting for reload/navigation.
event.waitUntil(self.clients.claim());
});