user_preferences-member-service-worker.js (1564B)
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 "user_preferences-member-manual.html", 10 "user_preferences-member-service-worker.js", 11 "resources/user_preferences-member-manual.js", 12 "resources/icon.png" 13 ]; 14 15 // Load all resources for this service worker. 16 const precache = async () => { 17 const cache = await caches.open(CACHE_NAME); 18 await cache.addAll(resources); 19 }; 20 21 // Get a resource from the cache. 22 const fromCache = async request => { 23 const cache = await caches.open(CACHE_NAME); 24 return await cache.match(request.url); 25 }; 26 27 // Attempt to get resources from the network first, fallback to the cache if we're 28 // offline. 29 const networkFallbackToCache = async request => { 30 try { 31 const response = await fetch(request); 32 if (response.ok) return response; 33 } catch (err) {} 34 return await fromCache(request); 35 }; 36 37 // When we have a new service worker, update the caches and swap immediately. 38 self.addEventListener("install", e => { 39 e.waitUntil(precache().then(() => self.skipWaiting())); 40 }); 41 42 // Claim existing clients. 43 self.addEventListener("activate", e => { 44 e.waitUntil(self.clients.claim()); 45 }); 46 47 // When a resource need to be fetched, check whether it is 48 // contained in the cache and return the cached version, otherwise 49 // get it from the network. 50 self.addEventListener("fetch", e => { 51 e.respondWith(networkFallbackToCache(e.request)); 52 });