// jshint asi:true var cacheName = "v2"; var content = [ "index.html", "app.js", "app.png", ] self.addEventListener("install", preCache) self.addEventListener("fetch", cachingFetch) self.addEventListener("activate", handleActivate) function handleActivate(event){ event.waitUntil( cleanup() ) } 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 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 function cachingFetch(event) { fetch(event.request) .then(resp => { caches.open(cacheName) .then(cache => { cache.put(event.request, resp.clone()) }) }) event.respondWith(caches.match(event.request)) }