Service workers – mechanizm wprowadzony do najnowszych przeglądarek internetowych, które definiują sposób zachowania aplikacji w przypadku utraty połączenia z Internetem. Jest to rozwiązanie mające na celu zapewnienie dostępu offline do aplikacji internetowych. Poprzednim podobnym rozwiązaniem był AppCache. Service Workers to skrypt napisany w JavaScript, który umożliwia pełną kontrolę nad pobieraniem zasobów z określonej domeny. Od czasu swojego wprowadzenia, skrypt ten jest domyślnie obsługiwany przez przeglądarki Chrome. Jest uruchamiany oddzielnie od głównego wątku przeglądarki, co umożliwia obsługę powiadomień w trybie „push”, natychmiastową synchronizację danych w tle, przechowywanie w pamięci podręcznej oraz buforowanie. Ponadto, Service Workers wpływa na otrzymywanie scentralizowanych aktualizacji[1].

Zastosowanie

edytuj

Service Workers są wykorzystywane do zapewnienia progresywnym aplikacjom webowym wysokiej wydajności oraz dobrej współpracy z natywnymi aplikacjami mobilnymi, przy minimalnym zużyciu miejsca na dysku, aktualizacjach w czasie rzeczywistym i lepszej widoczności tradycyjnych aplikacji sieciowych w wyszukiwarkach internetowych.

Cykl życia

edytuj

Cykl życia Service Workers jest najbardziej skomplikowaną jego częścią. Jeśli zostanie odpowiednio zaplanowany, umożliwia dostarczanie użytkownikom niezauważalnych aktualizacji.

Jeśli zdefiniujemy ścieżkę na /sw.js, to wszystkie akcje Service Worker wykonywane są w ramach zdarzeń (eventów): install, activate, fetch. tzn. w pliku /sw.js).

Przykładowy kod:

self.addEventListener('install', function(event) {
  // Zdarzenie wywoływane po zarejestrowaniu Service Workera
});

self.addEventListener('activate', function(event) {
  // Zdarzenie wywoływane po aktualizacji pliku Service Workera
});

self.addEventListener('fetch', function(event) {
  // Zdarzenie wywoływane podczas próby pobrania zasobu
});

Instalacja

edytuj

Zdarzenie instalacji – jest pierwszym eventem, który otrzymuje Service Workers i występuje tylko raz – na początku. Polecenie przekazane do installEvent.waitUntil() definiuje czas trwania i status instalacji. Mechanizm nie obsługuje żadnych innych zdarzeń, dopóki instalacja nie zostanie zakończona pomyślnie i Service Worker nie stanie się aktywny. Domyślnie, strona nie przejdzie przez skrypt Service Workera, chyba że żądanie strony zostanie przez niego obsłużone. W takim przypadku konieczne jest odświeżenie strony, aby zobaczyć efekty działania Service Workera.

Zazwyczaj w zdarzeniu „install” wypełnia się pamięć podręczną podstawowymi danymi.

Aktywacja

edytuj

W zdarzeniu „activate” dokonuje się wszelkich zmian w pamięci podręcznej, takich jak usunięcie niepotrzebnych zasobów.

Pobieranie zasobów

edytuj

Zdarzenie „fetch” jest wywoływane za każdym razem, gdy próbuje się pobrać zasób. To ostatnie zdarzenie jest wywoływane przy każdej próbie pobrania zasobu, niezależnie od tego, czy aplikacja jest w trybie offline czy online.

Rejestracja Service Workera

edytuj

Podczas pierwszej wizyty użytkownika na stronie internetowej, przeglądarka nie ma jeszcze zainstalowanego Service Workera. Aby to zrobić, developer musi zdefiniować moment rejestracji Service Workera w taki sposób, aby priorytetowo trafił do przeglądarki użytkownika i zawierał minimalny zestaw informacji potrzebnych do wyświetlenia interaktywnej strony. Wszystkie zasoby strony, które mogą spowolnić proces odpowiedzi, są uważane za niekorzystne dla szybkiej implementacji aplikacji.

Typowe rozwiązanie polega na opóźnieniu rejestracji Service Workera do momentu załadowania strony przez użycie kodu:

if ('serviceWorker' in navigator) {
window.addEventListener('load', function() {
navigator.serviceWorker.register('/service-worker.js');
});
}

Jeśli aplikacja korzysta z jakiejś platformy programistycznej, która wykonuje dodatkowe czynności po załadowaniu strony, warto znaleźć specyficzne zdarzenie dla tego frameworka, które sygnalizuje, kiedy te czynności zostaną wykonane. Należy ustalić optymalny moment uruchomienia Service Workera w tle, aby zbytnio nie spowolnić strony.

Podczas kolejnej wizyty nie ma znaczenia, kiedy wywołany zostanie navigator.serviceWorker.register() oraz czy w ogóle to nastąpi. Jeśli nie zmieni się adresu URL Service Workera, rejestracja nie będzie działać podczas kolejnych wizyt – ponieważ skrypt został już zarejestrowany wcześniej.

Bezpieczeństwo

Service Workers mają duże możliwości ingerencji w aplikację, ale wiąże się to również z ryzykiem ataku typu man-in-the-middle, zwłaszcza gdy są udostępniane przez mniej bezpieczny protokół HTTP. Istnieje jednak wyjątek - dla lokalnego hosta (localhost) nie występuje to utrudnienie, co pozwala na przeprowadzanie testów.

Można również podjąć dodatkowe działania, takie jak modyfikacja konfiguracji serwera, która polega na odrzucaniu wszystkich żądań zawierających nagłówek „Service-Worker: script”.

Bibliografia

edytuj

Przypisy

edytuj

📚 Artikel Terkait di Wikipedia

Lista skrótów i skrótowców używanych w informatyce

Local Loop WM – Window Mananger WMA – Window Media Audio WMF – Windows Metafile Format WMI – Window Management Instrumentation WMIC – Window Management Instrumentation

Wyszukiwanie głosowe

onstart = function() { recognizing = true; }; recognition.onerror = function(event) { console.log(event.error); }; recognition.onend = function() { recognizing

IEEE 802.11e

na uzyskanie pierwszeństwa do medium. okno rywalizacji (ang. contention window). Parametr ustawiany na kartach sieciowych stacji. Wykorzystywany jest przez

Bakterie

Chromulinavorax destructans, a pathogen of microzooplankton that provides a window into the enigmatic candidate phylum Dependentiae, „PLOS Pathogens”, 15 (5)

Terapia zaburzeń ze spektrum autyzmu

PMID: 25737021, PMCID: PMC4513196 . KendallK. Powell KendallK., Opening a window to the autistic brain, „PLoS biology”, 2 (8), 2004, E267, DOI: 10.1371/journal

Spis formatów plików

Adobe Type Manager (ATM) PFC Text file; First Choice PFK Programmable function keys; XTreePro PFM Windows Type 1 font metric file; PFS Database (PFS:FILE)

Przedimek w języku angielskim

wskazywania, co się w danym miejscu znajduje, np. There is an apple on the window sill → Na parapecie jest jabłko. przed imieniem i/lub nazwiskiem, kiedy

Kinematografia amerykańska

w USA mrocznymi dziełami, takimi jak Kobieta w oknie (The Woman in the Window, 1944) i Szkarłatna ulica (Scarlet Street, 1945). Do innych ważnych osiągnięć