сервисный работник — это тип веб-воркера работника. По сути, это файл 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 г.