Worker
Коротко
Общее название фоновых сред выполнения JavaScript в браузере — выделенных, разделяемых и сервис-воркеров, — которые работают отдельно от страницы и общаются с ней сообщениями.
Что такое «Worker»
Слово «воркер» в веб-разработке обозначает не одну технологию, а целое семейство. Все они запускают скрипт вне главного потока страницы, не имеют доступа к её DOM и обмениваются данными через сообщения. Различаются назначение, срок жизни и то, кому воркер принадлежит.
Вне браузера слово тоже встречается: так называют фоновые процессы очередей на сервере или функции, которые облачные платформы запускают на своих узлах. Ниже речь о браузерном значении.
Виды воркеров
- Выделенный воркер (
Worker) — принадлежит одной странице и живёт, пока она открыта. Нужен для тяжёлых вычислений; подробно разобран в статье Web Worker. - Разделяемый воркер (
SharedWorker) — один экземпляр на несколько вкладок одного сайта. Подходит, например, чтобы держать одно соединение с сервером на все вкладки. Поддержка в мобильных браузерах исторически была неполной. - Сервис-воркер — работает как посредник между сайтом и сетью: перехватывает запросы, отдаёт ответы из кеша, принимает push-уведомления. Может запускаться, даже когда страница закрыта. На нём построены офлайн-режим и установка PWA.
Близкие родственники — ворклеты: облегчённые скрипты, которые браузер встраивает прямо в конвейер отрисовки или обработки звука.
Пример регистрации сервис-воркера
if ('serviceWorker' in navigator) {
navigator.serviceWorker
.register('/sw.js')
.then((reg) => console.log('Область действия:', reg.scope))
.catch((err) => console.error('Не удалось:', err));
}
Сервис-воркер работает только по HTTPS (исключение — localhost при разработке). Файл, размещённый в корне сайта, контролирует все страницы домена; размещённый в подпапке — только её.
На что обратить внимание
Самый коварный вид — сервис-воркер. Он кеширует ответы, и если стратегия кеширования написана неудачно, посетители неделями видят старую версию сайта даже после обновления. При переносе или редизайне сайта с PWA стоит проверять, не остался ли у пользователей зарегистрирован прежний воркер. Посмотреть и удалить его можно в инструментах разработчика, на вкладке Application.

