|
|
|
|
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())
|
|
|
|
|
})
|