feat(pwa): clear old cache on sw activate

This commit is contained in:
Julien Oculi 2024-07-18 14:22:26 +02:00
parent 6d29321e88
commit 838bdec6ea

View file

@ -84,8 +84,9 @@ if (IS_SW) {
event.waitUntil(openPreCache())
})
self.addEventListener('activate', () => {
//TODO handle activation
self.addEventListener('activate', (event) => {
// Clear old caches to reduce storage usage
event.waitUntil(clearOldCaches())
})
self.addEventListener('fetch', (event) => {
@ -252,6 +253,23 @@ async function openPreCache() {
return { cache, version, preCachedUrls }
}
async function clearOldCaches() {
// Clear memory
memory.clear()
// List all caches by their names.
const names = await caches.keys()
const preCacheName = await swStorage.getItem('$sw.pre-cache.version')
const dynCacheName = await swStorage.getItem('$sw.dyn-cache.version')
for (const name of names) {
// If a cache's name is the current name, delete it.
if (name === preCacheName) continue
if (name == dynCacheName) continue
caches.delete(name)
}
}
export function main() {
console.assert()
}