Регистрация service worker из HTML
Регистрируйте service worker с помощью тега script и API navigator
«Регистрация service worker из HTML» — бесплатный урок HTML Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения HTML Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс HTML Academy содержит 4 уроков всего.
Что такое сервис-воркер
Сервис-воркер — это файл JavaScript, который работает в фоновом режиме отдельно от любой страницы и перехватывает сетевые запросы в своей области действия. Он обеспечивает работу без подключения к сети, push-уведомления, фоновую синхронизацию и ускоренную повторную загрузку благодаря кэшированию.
Регистрация
Зарегистрируйте сервис-воркер из скрипта страницы: navigator.serviceWorker.register("/sw.js"). Браузер загружает /sw.js, разбирает его, выполняет событие установки и начинает перехватывать запросы в области действия регистрации.
if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("/sw.js")
.then((reg) => console.log("Registered, scope:", reg.scope))
.catch((err) => console.error("Registration failed:", err));
}Сначала проверьте поддержку функции
Старые браузеры не поддерживают сервис-воркеры. Всегда проверяйте поддержку функции с помощью "serviceWorker" in navigator перед вызовом register, иначе в браузерах без этого API вызов вызовет ошибку. Добавление полифилла невозможно: сервис-воркеры нельзя реализовать с помощью полифилла, поскольку им требуется интеграция на уровне браузера.
Область действия
Область действия — это префикс пути, которым управляет сервис-воркер. По умолчанию область действия совпадает с каталогом файла сервис-воркера: /sw.js управляет всеми URL внутри /. Чтобы зарегистрировать сервис-воркер с более глубокой областью действия из другого расположения файла, задайте параметр области действия и передавайте заголовок, разрешающий такую область действия сервис-воркера.
Где разместить sw.js
Разместите sw.js в корне приложения (/sw.js), чтобы его область действия по умолчанию охватывала весь сайт. Более глубокие пути (/app/sw.js) ограничивают область действия каталогом /app/ и вложенными каталогами, что редко требуется.
Момент регистрации
Зарегистрируйте сервис-воркер после загрузки страницы, чтобы он не конкурировал за пропускную способность во время важного этапа отрисовки: window.addEventListener("load", () => navigator.serviceWorker.register("/sw.js")). Возможности PWA начнут работать при последующих посещениях, не задерживая первое посещение.
Обновления
Браузер автоматически проверяет наличие обновлённого sw.js (обычно каждые 24 часа и при большинстве загрузок страниц). Если содержимое файла изменилось, новый сервис-воркер загружается, устанавливается и ждёт в состоянии ожидания, пока не закроются все существующие вкладки, — затем активируется.
Принудительное обновление
registration.update() вручную запускает проверку обновлений. self.skipWaiting() внутри нового sw.js немедленно активирует его, не дожидаясь закрытия вкладок. Объедините эти вызовы, чтобы всегда запускать последнюю версию сервис-воркера, но учитывайте повторную загрузку данных во время сеанса.
Отмена регистрации
registration.unregister() удаляет сервис-воркер. Это полезно во время разработки, если неисправный сервис-воркер нарушает работу сайта. В Chrome DevTools на вкладке «Приложение» → «Сервис-воркеры» есть кнопка «Отменить регистрацию» для той же цели при отладке.
Распространённая ошибка
Регистрация сервис-воркера через HTTP без HTTPS завершается без видимой ошибки — сервис-воркерам требуется защищённый источник (HTTPS или localhost для разработки). Если регистрация не выполняется, проверьте консоль на наличие сообщения «Произошла ошибка сертификата SSL».
Взаимодействие сервис-воркера и страницы
Сервис-воркер не имеет доступа к DOM. Для передачи сообщений используйте navigator.serviceWorker.controller.postMessage() на странице и self.addEventListener("message", handler) в сервис-воркере (и наоборот). Это полезно для инвалидации кэша, проверки версии и пользовательских событий.
Первое и повторное посещение
При первом посещении сервис-воркер устанавливается и начинает управлять страницами только после перезагрузки страницы. Чтобы сразу управлять первой навигацией, вызовите self.clients.claim() в событии активации — это полезно для приложений, рассчитанных прежде всего на работу без сети.
Проверка знаний
Почему сервис-воркеры должны передаваться по HTTPS или через localhost?
Итоги
Регистрируйте сервис-воркеры из JS страницы с помощью navigator.serviceWorker.register("/sw.js") после проверки поддержки функции. Размещайте sw.js в корне приложения, чтобы получить полную область действия. Выполняйте регистрацию после загрузки, чтобы не конкурировать с важной отрисовкой. Обновления проверяются автоматически через определённые интервалы; принудительно запустить их можно с помощью registration.update или skipWaiting. Требуется HTTPS, чтобы предотвратить внедрение вредоносного сервис-воркера.
Часто задаваемые вопросы
Урок «Регистрация service worker из HTML» бесплатный?
Да — полный текст урока «Регистрация service worker из HTML» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс HTML Academy, подпишись на CoddyKit PRO. Курс HTML Academy содержит 4 уроков всего.
Чему я научусь в уроке «Регистрация service worker из HTML»?
Регистрируйте service worker с помощью тега script и API navigator Ты практикуешь HTML Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать HTML Academy?
Предыдущий опыт не требуется. HTML Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Регистрация service worker из HTML»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке HTML Academy?
Да. Каждый урок HTML Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Манифест веб-приложения
- Регистрация service worker из HTML
- Цвет темы и значки приложения
- Резервная страница для офлайн-режима