Try this solution to clean up excess SW cache

This commit is contained in:
Lim Chee Aun 2024-09-17 19:04:10 +08:00
parent f3345ad9f8
commit 1d949a1ab2

View file

@ -48,6 +48,30 @@ setTimeout(() => {
} catch (e) {}
}, 5000);
// Service worker cache cleanup
if ('serviceWorker' in navigator && typeof caches !== 'undefined') {
const MAX_SW_CACHE_SIZE = 300;
let swInterval = setInterval(() => {
if (window.__IDLE__) {
clearInterval(swInterval);
(async () => {
const keys = await caches.keys();
for (const key of keys) {
const cache = await caches.open(key);
const _keys = await cache.keys();
if (_keys.length > MAX_SW_CACHE_SIZE) {
console.warn('Cleaning cache', key, _keys.length);
const deleteKeys = _keys.slice(MAX_SW_CACHE_SIZE);
for (const deleteKey of deleteKeys) {
await cache.delete(deleteKey);
}
}
}
})();
}
}, 15_000);
}
window.__CLOAK__ = () => {
document.body.classList.toggle('cloak');
};