PWA гайд
Offline-кэширование ассетов и API
Что кэшировать, что нельзя, и как версионировать кэш, чтобы пользователи не залипали на старой оболочке приложения.
Все материалы
2. Паттерн версий
const VERSION = 'v3';
const STATIC_CACHE = `static-${VERSION}`;
const DATA_CACHE = `data-${VERSION}`;
// На activate: удаляем кэши, которые не совпадают с VERSION
self.addEventListener('activate', (event) => {
event.waitUntil((async () => {
const keys = await caches.keys();
await Promise.all(
keys
.filter((key) => !key.endsWith(VERSION))
.map((key) => caches.delete(key))
);
})());
});
Каждый релиз, где меняется shell, должен повышать VERSION.