47 lines
978 B
JavaScript
47 lines
978 B
JavaScript
// jshint asi:true
|
|
|
|
var cacheName = "v1";
|
|
var content = [
|
|
"index.html",
|
|
"app.js",
|
|
"app.css",
|
|
"app.svg",
|
|
]
|
|
|
|
|
|
self.addEventListener("install", preCache)
|
|
self.addEventListener("fetch", cachingFetch)
|
|
self.addEventListener("activate", handleActivate)
|
|
|
|
async function cleanup(event) {
|
|
let cacheNames = await caches.keys()
|
|
for (let name of cacheNames) {
|
|
if (name != cacheName) {
|
|
console.log("Deleting old cache", name)
|
|
caches.delete(name)
|
|
}
|
|
}
|
|
}
|
|
|
|
function handleActivate(event){
|
|
event.waitUntil(cleanup())
|
|
}
|
|
|
|
|
|
function preCache(event) {
|
|
event.waitUntil(
|
|
caches.open(cacheName)
|
|
.then(cache => cache.addAll(content))
|
|
)
|
|
}
|
|
|
|
// Go try to pull a newer version from the network,
|
|
// but return what's in the cache for this request
|
|
async function cachingFetch(event) {
|
|
let resp = await fetch(event.request)
|
|
let cache = await caches.open(cacheName)
|
|
cache.put(event.request, resp.clone())
|
|
|
|
event.respondWith(caches.match(event.request))
|
|
}
|