Что такое Service Worker?
DOM и браузер
Service Worker — это скрипт, работающий в фоне отдельно от страницы, выступающий прокси между приложением и сетью. Он даёт офлайн-работу, кеширование и push-уведомления.
Что это
Service Worker — фоновый поток, который браузер запускает независимо от вкладки. Он перехватывает сетевые запросы и может отвечать из кеша.
// Регистрация
navigator.serviceWorker.register('/sw.js');
// В sw.js — перехват запросов
self.addEventListener('fetch', (event) => {
event.respondWith(
caches.match(event.request).then((cached) => cached || fetch(event.request)),
);
});Возможности
- Офлайн-режим — отдавать закешированные ресурсы без сети.
- Кеширование — стратегии (cache-first, network-first).
- Push-уведомления — получать пуши даже без открытой вкладки.
- Фоновая синхронизация.
- Основа PWA (Progressive Web Apps).
Ограничения
- Работает только по HTTPS (кроме localhost).
- Нет доступа к DOM — общается со страницей через
postMessage. - Асинхронный, событийно-ориентированный; может «засыпать».
- Имеет собственный жизненный цикл (install → activate → fetch).
Коротко для собеседования
Service Worker — фоновый скрипт-прокси между приложением и сетью: перехватывает запросы, кеширует, даёт офлайн-режим, push-уведомления и фоновую синхронизацию (основа PWA). Работает по HTTPS, без доступа к DOM (через postMessage), со своим жизненным циклом.