Использовать 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());
});