сервисный работник — это тип веб-воркера работника. По сути, это файл JavaScript, который запускается отдельно от основного потока браузера, перехватывая сетевые запросы, кэшируя или извлекая ресурсы из кеша, а также может доставлять push-сообщения.

Сервис-воркер — это управляемый событиями воркер, зарегистрированный для источника и пути. Он принимает форму файла JavaScript, который может управлять веб-страницей/сайтом, с которым он связан, перехватывая и изменяя запросы навигации и ресурсов, а также кэшируя ресурсы очень детальным образом, чтобы дать вам полный контроль над тем, как ваше приложение ведет себя в определенные ситуации. ОН НЕ МОЖЕТ ДОСТУПАТЬ К ДОМУ.

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

По сути, Service Worker — это тип Web Worker, а точнее, что-то вроде Shared Worker:

  • Service Worker работает в собственном глобальном контексте скрипта.
  • Он не привязан к конкретной веб-странице
  • Он не может получить доступ к DOM

Жизненный цикл сервис-воркера полностью отделен от вашей веб-страницы. Он состоит из следующих фаз:

  • Скачать
  • Установка
  • Активация

Это происходит, когда браузер загружает файл .js, содержащий Service Worker.

Чтобы установить Service Worker для своего веб-приложения, вы должны сначала зарегистрировать его, что вы можете сделать в своем коде JavaScript. Когда Service Worker зарегистрирован, он предлагает браузеру запустить этап установки Service Worker в фоновом режиме.

После того, как Service Worker будет установлен, следующим шагом будет его активация. Этот шаг — отличная возможность управлять предыдущими кэшами.

После активации Service Worker начнет контролировать все страницы, попадающие в его область действия. Интересный факт: страница, на которой впервые был зарегистрирован Service Worker, не будет контролироваться до тех пор, пока эта страница не будет загружена снова. Как только Service Worker получит контроль, он будет находиться в одном из следующих состояний:

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

Некоторые уникальные функции, которые предоставляет Service Worker:

  • Push-уведомления: пользователи могут подписаться на получение своевременных обновлений из веб-приложений.
  • Фоновая синхронизация — позволяет отложить действия до тех пор, пока у пользователя не будет стабильного подключения. Таким образом, вы можете убедиться, что все, что пользователь хочет отправить, действительно отправлено.
  • Периодическая синхронизация (в будущем) — API, предоставляющий функции для управления периодической фоновой синхронизацией.
  • Геозоны (в будущем) — вы можете определить параметры, также называемые геозоны, которые окружают области интереса. Веб-приложение получает уведомление, когда устройство пересекает геозону, что позволяет предоставлять полезные возможности в зависимости от географии пользователя.

Сервисные работники также предназначены для таких целей, как:

  • Фоновая синхронизация данных.
  • Отвечая на запросы ресурсов из других источников.
  • Получение централизованных обновлений дорогостоящих данных, таких как геолокация или гироскоп, чтобы несколько страниц могли использовать один набор данных.
  • Компиляция на стороне клиента и управление зависимостями CoffeeScript, less, модулей CJS/AMD и т. д. для целей разработки.
  • Хуки для фоновых сервисов.
  • Пользовательские шаблоны на основе определенных шаблонов URL.
  • Улучшения производительности, например, предварительная загрузка ресурсов, которые могут понадобиться пользователю в ближайшем будущем, например несколько следующих изображений в фотоальбоме.

Первоначально опубликовано на medium.com 2 января 2019 г.