Make sure cleanup runs at least once

This commit is contained in:
Lim Chee Aun 2024-09-18 13:09:03 +08:00
parent 73a4326b55
commit 0e3cc864db

View file

@ -50,10 +50,14 @@ setTimeout(() => {
// Service worker cache cleanup // Service worker cache cleanup
if ('serviceWorker' in navigator && typeof caches !== 'undefined') { if ('serviceWorker' in navigator && typeof caches !== 'undefined') {
const MAX_SW_CACHE_SIZE = 30; const MAX_SW_CACHE_SIZE = 50;
const IGNORE_CACHE_KEYS = ['icons']; const IGNORE_CACHE_KEYS = ['icons'];
const clearCaches = async () => { let clearedOnce = false;
if (!window.__IDLE__) return; const FAST_INTERVAL = 10_000; // 10 seconds
const SLOW_INTERVAL = 60 * 60 * 1000; // 1 hour
async function clearCaches() {
if (window.__IDLE__) {
try {
const keys = await caches.keys(); const keys = await caches.keys();
for (const key of keys) { for (const key of keys) {
if (IGNORE_CACHE_KEYS.includes(key)) continue; if (IGNORE_CACHE_KEYS.includes(key)) continue;
@ -65,11 +69,15 @@ if ('serviceWorker' in navigator && typeof caches !== 'undefined') {
for (const deleteKey of deleteKeys) { for (const deleteKey of deleteKeys) {
await cache.delete(deleteKey); await cache.delete(deleteKey);
} }
clearedOnce = true;
} }
} }
}; } catch (e) {} // Silent fail
setTimeout(clearCaches, 10_000); // after 10 seconds }
setInterval(clearCaches, 30 * 60 * 1000); // every 30 minutes // Once cleared, clear again at slower interval
setTimeout(clearCaches, clearedOnce ? SLOW_INTERVAL : FAST_INTERVAL);
}
setTimeout(clearCaches, FAST_INTERVAL);
} }
window.__CLOAK__ = () => { window.__CLOAK__ = () => {