PWA, Service Workers, Cache Storage, App Cache - Max-Starling/Notes GitHub Wiki

Service Worker

Service Worker позволяет получить приложение, использующее в первую очередь кешированные ресурсы, предоставляя таким образом поведение по-умолчанию в автономном режиме до того, как будет получено по сети больше данных (подход Offline First). Так обычно работают и нативные приложения.

Предыдущей попыткой была технология AppCache, которая позволяла действительно просто указать ресурсы для кеширования. Но она допускала много предположений о том, что вы пытаетесь сделать и ломалась, если приложение работало не в точности с этими предположениями. Синтаксис Service Worker сложнее синтаксиса AppCache, но зато можно с помощью JavaScript контролировать AppCache-подразумеваемое поведение с высокой степенью детализации, что позволяет вам решать проблемы и еще много другого. Пример использования Webpack + AppCache + SW: offline-plugin.

Необходимое условие использования SW — HTTPS-соединение.
Это можно обойти с помощью флага Insecure origins treated as secure в chrome://flags/, заставив Chrome воспринимать сайт как безопасный. Также исключением является localhost.

Если соединение защищено, то объект типа ServiceWorkerContainer будет доступен через navigator.serviceWorker. Этот объект позволяет получать текущее состояние SW и состояние его регистрации, а также производить над ним операции register(), update(), unregister().

(о частых проблемах)

(о работе с remote devices)

https://codelabs.developers.google.com/codelabs/sw-precache/#4