1const currentVersion = 'v4'; 2 3self.addEventListener('install', (event) => { 4 event.waitUntil( 5 caches.open(currentVersion) 6 .then((cache) => { 7 return cache.addAll([]); 8 }), 9 ); 10}); 11 12self.addEventListener('activate', (event) => { 13 var cacheKeeplist = [currentVersion]; 14 15 event.waitUntil( 16 caches.keys() 17 .then((keyList) => { 18 return Promise.all(keyList.map((key) => { 19 if (cacheKeeplist.indexOf(key) === -1) { 20 return caches.delete(key); 21 } 22 })); 23 }), 24 ); 25}); 26 27self.addEventListener('fetch', (event) => { 28 const cachesFiles = /\.js|\.html|\.png|\.svg|\.jpg|\.gif|\.json|\.mp3|\.woff2|\.woff|\.css/; 29 30 if ((!cachesFiles.test(event.request.url) || 31 (!event.request.url.includes('https'))) && 32 event.request.destination !== 'document' 33 ) { 34 return; 35 } 36 37 event.respondWith( 38 caches.match(event.request) 39 .then((resp) => { 40 return resp || fetch(event.request) 41 .then((response) => { 42 return caches.open(currentVersion) 43 .then((cache) => { 44 cache.put(event.request, response.clone()); 45 return response; 46 }); 47 }); 48 }), 49 ); 50});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.