Service Worker может держать старую версию сайта, даже если код уже обновлен. Пользователь видит старые файлы, а разработчик не понимает, почему правка не появилась.

Почему возникает проблема

Новый worker часто переходит в waiting, пока открыты старые вкладки. Также мешают агрессивные cache strategies, неправильное имя cache и отсутствие логики обновления клиента.

Что проверяю

  • Как регистрируется service worker.
  • В каком состоянии находится новый worker.
  • Какие cache storage используются.
  • Есть ли skipWaiting и clients.claim.
  • Как пользователь узнает о новой версии.

Как решаю задачу

Я проверяю жизненный цикл worker: install, waiting, activate, fetch. Важно обновить кеш без поломки офлайн-режима.

  • Смотрю состояние worker в DevTools.
  • Проверяю стратегию кеширования.
  • Исправляю версионирование cache.
  • Добавляю контролируемое обновление.
  • Тестирую новую версию с открытыми вкладками.

Что будет на выходе

  • Service Worker активируется предсказуемо.
  • Пользователь получает обновленный сайт.
  • Кеш не держит устаревшие файлы бесконечно.
  • PWA остается стабильным.

Что подготовить

  • URL сайта или PWA.
  • Файл service worker.
  • Описание проблемы после обновления.
  • Нужен ли офлайн-режим.

Вопросы и ответы

Можно ли просто отключить service worker?

Можно, но если PWA и офлайн-режим нужны, лучше исправить стратегию обновления.

Почему помогает очистка кеша?

Потому что старый worker и cache storage удаляются, но пользователь не должен делать это вручную.

Нужна похожая задача?

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