Если старый service worker продолжает обслуживать сайт, пользователь может видеть устаревшие JS, CSS, HTML или API-ответы даже после нового деплоя. Особенно часто это ломает PWA и сайты с офлайн-кешем.

Сначала проверьте Application > Service Workers и Cache Storage в DevTools: какой worker активен, какие файлы закешированы и обновляется ли версия.

Коротко: что делать

  • Проверить активный service worker и дату его установки
  • Посмотреть Cache Storage и версии кешей
  • Проверить стратегию для HTML, JS, CSS и API
  • Проверить skipWaiting и clientsClaim
  • Проверить, меняются ли имена файлов при build

Основные причины

У этой проблемы редко бывает одна универсальная причина. Обычно нужно проверить связку настроек, данных, кода и внешних сервисов, а потом уже выбирать способ исправления.

  • Service worker установлен, но новый ждет закрытия вкладок
  • HTML кешируется слишком агрессивно
  • Cache name не меняется между релизами
  • Старые assets не удаляются в activate event
  • Пользователь держит открытую вкладку со старым worker

Пошаговая диагностика

Диагностику лучше вести от конкретного примера: один пользователь, один запрос, один документ, одно событие или один экран. Так проще увидеть точку, где система начинает вести себя неправильно.

  • Открыть DevTools и включить Update on reload для проверки
  • Сравнить версию JS-файла в HTML и в cache
  • Проверить install/activate логи service worker
  • Проверить response source: network или service worker
  • Проверить поведение после закрытия всех вкладок

Как исправить проблему

Исправление должно закрывать корневую причину, а не только внешний симптом. Если проблема связана с доступами, платежами, данными или безопасностью, сначала стоит сделать резервную копию и проверить правку на тестовом сценарии.

  • Версионировать cache name и чистить старые кеши в activate
  • Не кешировать HTML как immutable
  • Настроить skipWaiting/clientsClaim с понятным UX обновления
  • Разделить стратегии для assets, HTML и API
  • Добавить кнопку или уведомление обновить приложение

Безопасный план решения

Не удаляйте service worker грубо для всех без проверки, если сайт реально должен работать офлайн. Сначала исправьте стратегию обновления и кешей.

Чего не стоит делать

  • Не кешировать index.html навсегда
  • Не оставлять один cache name на все релизы
  • Не считать hard refresh решением для всех пользователей
  • Не смешивать API-кеш и assets без правил

Что подготовить перед исправлением

  • Ссылка на сайт
  • Файл service worker
  • Стратегия кеширования или Workbox config
  • Как пользователи видят старую версию

FAQ

Почему у меня новая версия, а у клиента старая?

У клиента может быть активен старый service worker и старый кеш. Обычный деплой не всегда сразу его заменяет.

Можно ли удалить service worker?

Можно, если PWA/офлайн больше не нужны. Но лучше сначала понять последствия.

Как правильно обновлять PWA?

Версионировать кеши, чистить старые assets и показывать пользователю понятное обновление.

Когда стоит обратиться за помощью

Помощь нужна, если после релиза пользователи массово видят старый интерфейс, ошибки JS или неправильные API-данные.

Итог

Начните с DevTools Application и Cache Storage. Если нужно исправить service worker, PWA-кеш и обновление сайта, можно написать в Telegram @rabotator_support.