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.

Обновлено:

Все термины раздела «Frontend»

Что будем искать? Например,Продвижение