vite-pwa
Version:
This package helps you to cache your files with service worker.
38 lines (35 loc) • 1.06 kB
JavaScript
const preCache = '_preCache_'
const runtimeCache = '_runtimeCache_'
const assets = _preCacheFiles_
const spa = _spaEnabled_
self.addEventListener('activate', (evt) => {
evt.waitUntil(
caches
.keys()
.then((keys) => Promise.all(keys.map((key) => caches.delete(key))))
.then(() => caches.open(preCache).then((cache) => cache.addAll(assets)))
)
})
self.addEventListener('fetch', (evt) => {
if (evt.request.url.startsWith(location.origin)) {
evt.respondWith(
caches.match(evt.request).then((cacheRes) => {
return (
cacheRes ||
fetch(evt.request)
.then((fetchRes) => {
return caches.open(runtimeCache).then((cache) => {
cache.put(evt.request.url, fetchRes.clone())
return fetchRes
})
})
.catch(() => {
if (spa) {
return caches.match('/').then((cacheRes) => cacheRes)
}
})
)
})
)
}
})