start_url-member-service-worker.js (1621B)
1 // Some user agents only offer app installation if there is a SW and it handles 2 // offline requests. 3 4 const cacheVersion = "1.2"; 5 const CACHE_NAME = `cache-v${cacheVersion}`; 6 7 // The resources cached by this service worker. 8 const resources = [ 9 "fail.html", 10 "pass.html", 11 "start_url-member-fail-manual.sub.html", 12 "start_url-member-pass-manual.html", 13 "start_url-member-service-worker.js", 14 "resources/start_url-member-manual.js", 15 "resources/icon.png" 16 ]; 17 18 // Load all resources for this service worker. 19 const precache = async () => { 20 const cache = await caches.open(CACHE_NAME); 21 await cache.addAll(resources); 22 }; 23 24 // Get a resource from the cache. 25 const fromCache = async request => { 26 const cache = await caches.open(CACHE_NAME); 27 return await cache.match(request.url); 28 }; 29 30 // Attempt to get resources from the network first, fallback to the cache if we're 31 // offline. 32 const networkFallbackToCache = async request => { 33 try { 34 const response = await fetch(request); 35 if (response.ok) return response; 36 } catch (err) {} 37 return await fromCache(request); 38 }; 39 40 // When we have a new service worker, update the caches and swap immediately. 41 self.addEventListener("install", e => { 42 e.waitUntil(precache().then(() => self.skipWaiting())); 43 }); 44 45 // Claim existing clients. 46 self.addEventListener("activate", e => { 47 e.waitUntil(self.clients.claim()); 48 }); 49 50 // When a resource need to be fetched, check whether it is 51 // contained in the cache and return the cached version, otherwise 52 // get it from the network. 53 self.addEventListener("fetch", e => { 54 e.respondWith(networkFallbackToCache(e.request)); 55 });