async function initCache() { const cache = await caches.open('v1') await cache.addAll([ '/', '/index.html', '/app.js', '/components/project.js' ]) } self.addEventListener("install", event => { event.waitUntil(initCache()) }) async function cacheFirst(request) { const resp = await caches.match(request) if (resp) { return resp } else { return fetch(request) } } self.addEventListener('fetch', event => { event.respondWith(cacheFirst(event.request)) }) async function reloadAll() { const windows = await clients.matchAll() await Promise.allSettled( windows.map(async client => { await client.navigate(client.url) }) ) } self.addEventListener('activate', event => { event.waitUntil(reloadAll()) })