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 удаляются, но пользователь не должен делать это вручную.
Нужна похожая задача?
Опишите, что именно не работает и где это видно. Я быстро разберу симптомы, проверю техническую причину и предложу понятный план исправления без лишних созвонов и затяжки.