Обзор

Введение

Обзор работы службы, пояснения некоторых данных и событий жизненного цикла, а также примечания по использованию.

Обзор

Процессы, которые выполняются в браузере в отдельных потоках основного потока пользовательского интерфейса. Они перехватывают сетевые запросы. Иметь события (управляемые событиями). Будет работать в фоновом режиме/офлайн, когда сайт закрыт. Отдельный файл 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-поток и обратно.