forked from udacity/mws-restaurant-stage-1
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathservice-worker.js
36 lines (31 loc) · 982 Bytes
/
service-worker.js
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
29
30
31
32
33
34
35
36
const cache_version = 'v1-cache';
self.addEventListener('activate', (event) => {
// delete old caches
event.waitUntil(caches.keys().then((keys) => {
return Promise.all(keys.map((key, i) => {
if (key !== cache_version) {
return caches.delete(keys[i]);
}
}))
}))
});
self.addEventListener('fetch', (event) => {
event.respondWith(caches.match(event.request).then((response) => {
return response || getFromNetwork(event);
}));
});
getFromNetwork = (event) => {
let url = event.request.clone();
return fetch(url).then((resp) => {
if (!resp || resp.status !== 200 || resp.type !== 'basic') {
return resp;
}
// cache the response
let response = resp.clone();
caches.open(cache_version).then((cache) => {
let url2 = event.request.clone();
cache.put(event.request, response);
});
return resp;
})
}