Czym jest Service Worker?
Service worker to skrypt, który przeglądarka uruchamia w tle, oddzielnie od strony internetowej, otwierając drzwi do funkcji, które nie wymagają obecności strony internetowej ani interakcji użytkownika. Obecnie obejmują one funkcje takie jak powiadomienia push i synchronizacja w tle.
Kluczowe cechy:
- Przechwytywanie i buforowanie żądań sieciowych: Service workers mogą przechwytywać żądania sieciowe i decydować, co z nimi zrobić. Dzięki temu można obsługiwać tryb offline, buforując niezbędne zasoby i udostępniając je, gdy użytkownik jest offline.
- Synchronizacja w tle: Pozwala na synchronizację, gdy użytkownik jest połączony z internetem, zapewniając, że aplikacja jest aktualna.
- Powiadomienia push: Service workers mogą obsługiwać powiadomienia push, nawet gdy aplikacja nie jest uruchomiona, zwiększając zaangażowanie użytkowników.
Jak zaimplementować Service Workera:
-
Rejestracja Service Workera
if ('serviceWorker' in navigator) { window.addEventListener('load', function() { navigator.serviceWorker.register('/service-worker.js').then(function(registration) { console.log('Service Worker zarejestrowany z zakresem:', registration.scope); }).catch(function(error) { console.log('Rejestracja Service Workera nie powiodła się:', error); }); }); }
-
Zdarzenie Install
- Service worker używa zdarzenia
install
do buforowania zasobów.
self.addEventListener('install', function(event) { event.waitUntil( caches.open('my-cache').then(function(cache) { return cache.addAll([ '/', '/styles/main.css', '/script/main.js' ]); }) ); });
- Service worker używa zdarzenia
-
Zdarzenie Fetch
- Przechwytywanie żądań sieciowych i serwowanie buforowanych zasobów, jeśli są dostępne.
self.addEventListener('fetch', function(event) { event.respondWith( caches.match(event.request).then(function(response) { return response || fetch(event.request); }) ); });
Korzyści z Service Workerów
- Funkcjonalność offline: Poprzez buforowanie zasobów i zapewnianie funkcjonalności offline, service workers poprawiają doświadczenie użytkownika w miejscach o słabej łączności.
- Wydajność: Zmniejszenie potrzeby pobierania zasobów przez sieć może znacznie zwiększyć szybkość aplikacji.
- Zaangażowanie: Funkcje takie jak powiadomienia push pomagają utrzymać zaangażowanie użytkowników w aplikację, nawet gdy nie jest aktywnie uruchomiona.