-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsw.js
More file actions
28 lines (28 loc) · 854 Bytes
/
sw.js
File metadata and controls
28 lines (28 loc) · 854 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
const CACHE_NAME = 'c25k-cache-v1';
const ASSETS = [
'./',
'./index.html',
'./style.css',
'./nav.css',
'./settings.css',
'./app.js',
'./manifest.json'
];
self.addEventListener('install', e => {
e.waitUntil(caches.open(CACHE_NAME).then(c=>c.addAll(ASSETS)));
});
self.addEventListener('activate', e => {
e.waitUntil(caches.keys().then(keys=>Promise.all(keys.filter(k=>k!==CACHE_NAME).map(k=>caches.delete(k)))));
});
self.addEventListener('fetch', e => {
if(e.request.method !== 'GET') return;
e.respondWith(
caches.match(e.request).then(res=> res || fetch(e.request).then(netRes=>{
if(netRes.status===200 && netRes.type==='basic'){
const clone = netRes.clone();
caches.open(CACHE_NAME).then(c=>c.put(e.request, clone));
}
return netRes;
}).catch(()=> caches.match('./index.html')))
);
});