Обзор
Введение
Обзор работы службы, пояснения некоторых данных и событий жизненного цикла, а также примечания по использованию.
Обзор
Процессы, которые выполняются в браузере в отдельных потоках основного потока пользовательского интерфейса. Они перехватывают сетевые запросы. Иметь события (управляемые событиями). Будет работать в фоновом режиме/офлайн, когда сайт закрыт. Отдельный файл js (например, sw.js). Нет доступа к DOM. Не привязан к одной странице. Запуск в собственном глобальном контексте скрипта.
регистр
Проверьте, доступен ли, посмотрев, находится ли «serviceWorker» в объекте навигатора. Если true, зарегистрируйте файл сервисного работника в navigator.serviceWorker.
События
Прикрепите прослушиватели событий в файле sw.js.
События данных
- fetch — локальное хранилище/сеть
Слушатель событий fetch будет вызываться при каждом ajax-запросе. Это означает, что у нас есть контроль над исходящими и принимаемыми звонками от клиента и от него. Событие Fetch запускается только тогда, когда сервис-воркер находится в активном состоянии. Мы можем перехватывать вызовы и использовать event.responseWith для отправки New Response(). - push — сервер отправляет данные сервис-воркеру
- sync — срабатывает, когда у пользователя есть подключение
События жизненного цикла
- Скачать/разобрать
- Установка
- Установлен/ожидает — запускается при первой загрузке браузером sw.js.
- Активация
- Активировано — начать обработку событий данных [fetch/push/sync]
- Избыточный — отказ или замена
Сфера
Файлы sw.js могут быть привязаны к пути URL. Файл sw.js в корне применит сервис-воркер ко всему сайту. Файл sw.js в каталоге «/api/sw.js» будет применяться только к URL-адресу с «/api/…». Это настраивается при регистрации сервис-воркера.
Принудительно нанять нового сервис-воркера
Любые изменения в сервис-воркере автоматически применяются к новым вкладкам. Если вы хотите, чтобы изменения применялись к существующим вкладкам, вызовите skipWaiting при установке и client.claims в обработчиках событий активации.
postMesage API
Способ отправки сообщений от сервис-воркера в UI-поток и обратно.