Progresywna aplikacja webowa
Istnieje wiele powszechnie używanych technologii do tworzenia progresywnych aplikacji webowych. Wszystkie PWA wymagają co najmniej service worker i manifestu.
ManifestEdit
Manifest aplikacji internetowej jest specyfikacją W3C definiującą manifest oparty na JSON (zwykle oznaczany jako manifest.json), aby zapewnić programistom scentralizowane miejsce do umieszczania metadanych związanych z aplikacją internetową, w tym:
- Nazwa aplikacji internetowej
- Linki do ikon aplikacji internetowej lub obiektów graficznych
- Preferowany adres URL do uruchomienia lub otwarcia aplikacji internetowej
- Dane konfiguracyjne aplikacji internetowej
- Domyślna orientacja aplikacji internetowej
- Możliwość ustawienia trybu wyświetlania, np.pełnoekranowy
Te metadane są kluczowe, aby aplikacja mogła zostać dodana do ekranu głównego lub w inny sposób wymieniona obok aplikacji natywnych.
Wsparcie dla iOSEdit
iOS Safari częściowo implementuje manifesty, podczas gdy większość metadanych PWA można zdefiniować za pomocą specyficznych dla Apple rozszerzeń meta tagów. Znaczniki te pozwalają programistom włączyć wyświetlanie pełnoekranowe, zdefiniować ikony i splash screeny oraz określić nazwę dla aplikacji.
WebAssemblyEdit
WebAssembly pozwala na uruchamianie prekompilowanego kodu w przeglądarce internetowej, z prędkością zbliżoną do natywnej. Dzięki temu biblioteki napisane w językach takich jak C mogą być dodawane do aplikacji internetowych. Ze względu na koszt przekazywania danych z JavaScript do WebAssembly, najbliższe zastosowania będą głównie polegały na przeczesywaniu liczb (jak rozpoznawanie głosu i wizja komputerowa), a nie na tworzeniu całych aplikacji.
Przechowywanie danychEdit
Konteksty wykonawcze progresywnych aplikacji webowych są rozładowywane, kiedy tylko jest to możliwe, więc progresywne aplikacje webowe muszą przechowywać większość długoterminowego stanu wewnętrznego (dane użytkownika, dynamicznie ładowane zasoby aplikacji) w jeden z następujących sposobów
Przechowywanie danych w sieci WebEdit
Web Storage jest standardem W3C API, który umożliwia przechowywanie kluczy-wartości w nowoczesnych przeglądarkach. API składa się z dwóch obiektów, sessionStorage (umożliwia przechowywanie tylko sesji, która jest wymazywana po zakończeniu sesji przeglądarki) i localStorage (umożliwia przechowywanie, które trwa przez sesje).
Pracownik serwisowyEdit
Pracownik serwisowy jest pracownikiem sieciowym, który implementuje programowalne proxy sieciowe, które może odpowiadać na żądania web/HTTP głównego dokumentu. Jest on w stanie sprawdzić dostępność zdalnego serwera i buforować zawartość, gdy serwer ten jest dostępny, a następnie serwować tę zawartość do dokumentu. Pracownicy serwisowi, tak jak wszyscy inni pracownicy webowi, działają niezależnie od głównego kontekstu dokumentu. Pracownicy serwisowi mogą obsługiwać powiadomienia push i synchronizować dane w tle, buforować lub pobierać żądania zasobów, przechwytywać żądania sieciowe i otrzymywać scentralizowane aktualizacje niezależnie od dokumentu, który ich zarejestrował, nawet jeśli ten dokument nie jest załadowany.
Pracownicy serwisowi przechodzą przez trzyetapowy cykl życia obejmujący rejestrację, instalację i aktywację. Rejestracja polega na podaniu przeglądarce lokalizacji pracownika serwisowego w celu przygotowania do instalacji. Instalacja ma miejsce, gdy w przeglądarce nie ma zainstalowanego pracownika serwisowego dla danej aplikacji webowej lub gdy nastąpiła aktualizacja pracownika serwisowego. Aktywacja następuje, gdy wszystkie strony PWA zostaną zamknięte, tak aby nie było konfliktu pomiędzy poprzednią wersją a zaktualizowaną. Cykl życia pomaga również zachować spójność podczas przełączania między wersjami service worker, ponieważ tylko jeden service worker może być aktywny dla domeny.
Indexed Database APIEdit
Indexed Database API to standard W3C API baz danych dostępny we wszystkich głównych przeglądarkach. API jest obsługiwane przez nowoczesne przeglądarki i umożliwia przechowywanie obiektów JSON oraz dowolnych struktur reprezentowalnych jako ciąg znaków. Indexed Database API może być używany z biblioteką wrapper zapewniającą dodatkowe konstrukcje wokół niego.
AppCache (przestarzałe)Edycja
Application Cache (lub AppCache lub HTML5 cache manifest) to wcześniejsza technologia, która pozwalała aplikacji buforować zawartość z wyprzedzeniem w celu późniejszego wykorzystania, gdy urządzenie jest w trybie offline. Działa odpowiednio dla aplikacji jednostronicowych, do których został zaprojektowany, ale zawodzi w problematyczny sposób w przypadku aplikacji wielostronicowych, takich jak wiki. Od maja 2019 r. technologia jest obsługiwana przez główne przeglądarki i używana od lat przez niektóre witryny, ale jest już zdeprecjonowana na rzecz pracowników usług i ostatecznie zostanie usunięta.