Инструменты разработчика в браузере для отладки SW

Service Worker (SW) — это скрипт, работающий в фоновом режиме, который перехватывает сетевые запросы и управляет кэшированием ресурсов. Для эффективной отладки SW необходимо использовать встроенные инструменты браузера, которые позволяют отслеживать регистрацию, активацию, запросы и работу кэшей. В современных браузерах, таких как Chrome и Firefox, эти возможности сосредоточены в панели Developer Tools.


Панель Application / Storage

В Chrome панель Application предоставляет полный контроль над Service Worker и связанными с ним данными:

  • Service Workers Раздел отображает список зарегистрированных SW, их статус (activating, activated, redundant), а также позволяет вручную зарегистрировать, остановить или удалить SW. Здесь можно наблюдать:

    • URL скрипта SW
    • Scope (область действия)
    • Последнюю дату обновления
    • Активные события (install, activate, fetch)
  • Cache Storage Позволяет просматривать содержимое кэшей, созданных SW. Каждый кэш имеет имя и набор ключей (URLs). Возможности включают:

    • Просмотр всех файлов в кэше
    • Удаление отдельных ресурсов
    • Полное очищение кэша Это особенно полезно для проверки работы библиотеки sw-precache, которая автоматически генерирует кэшированные файлы.
  • IndexedDB / LocalStorage / SessionStorage SW часто взаимодействуют с IndexedDB для хранения сложных структур данных. Разделы показывают структуру баз данных, их версии и содержимое.


Сеть и мониторинг запросов

Раздел Network в DevTools позволяет отслеживать все HTTP-запросы и ответы, включая те, которые перехватывает SW:

  • Статус запроса: 200 OK, 304 Not Modified, ошибки сети
  • Заголовки и тело запроса/ответа
  • Тип ответа: network, cached, service-worker
  • Фильтры по типу ресурса (JS, CSS, image, fetch/XHR)

Для SW особенно полезна колонка Service Worker в таблице запросов, которая показывает, был ли ресурс обслужен через SW кэш или напрямую через сеть. Это помогает проверить корректность работы правил runtimeCaching в sw-precache.


Консоль и события Service Worker

Консоль DevTools предоставляет информацию о событиях SW:

  • install — выполняется при установке SW
  • activate — активируется после установки, часто используется для очистки старых кэшей
  • fetch — перехватывает сетевые запросы
  • message — обработка сообщений из страницы

Для отладки удобно использовать console.log внутри SW, однако стандартная консоль страницы не показывает эти логи. В Chrome их можно увидеть, выбрав Service Worker в панели Application и нажав на ссылку inspect.


Эмуляция offline и throttling

Для тестирования кэширования SW важны режимы эмуляции сети:

  • Offline В панели Network можно установить режим offline, чтобы проверить доступность ресурсов только из кэша. Все запросы сети будут проваливаться, если SW не кэширует соответствующий ресурс.

  • Throttling Позволяет имитировать медленное соединение (3G, 2G), что помогает протестировать стратегию кэширования и время ответа SW.


Инструменты управления и обновления SW

Chrome предоставляет следующие возможности управления SW:

  • Update on reload — заставляет браузер обновить SW при перезагрузке страницы, минуя кэш браузера.
  • Bypass for network — отключает SW для конкретной вкладки, что позволяет сравнивать поведение страницы с и без SW.
  • Push / Sync events — эмуляция push-уведомлений и фоновой синхронизации, что полезно для полноценных PWA-тестов.

Эти инструменты позволяют полностью контролировать жизненный цикл SW, наблюдать за установкой новых версий, отладкой кэширования и обработкой fetch-запросов.


Практика с sw-precache

Библиотека sw-precache генерирует SW автоматически и управляет кэшированием статических файлов. Основные моменты, которые важно проверять через DevTools:

  • Регистрация SW — убедиться, что скрипт создан и активен
  • Содержимое кэша — проверить, что все ресурсы из precache добавлены
  • Стратегия обновления — обновление версий файлов должно корректно очищать устаревшие кэши
  • Обработка fetch-запросов — проверить, что SW отдает кэшированные ресурсы для повторных загрузок

Используя инструменты разработчика, можно детально контролировать каждый шаг работы SW и убедиться, что sw-precache выполняет свои задачи надежно.