-
Notifications
You must be signed in to change notification settings - Fork 191
/
Copy pathsw.js
37 lines (32 loc) · 1023 Bytes
/
sw.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
37
function addToCache(request, networkResponse) {
return caches.open('playbulb-candle')
.then(cache => cache.put(request, networkResponse.clone()));
}
function getCacheResponse(request) {
return caches.open('playbulb-candle').then(cache => {
return cache.match(request);
});
}
function getNetworkOrCacheResponse(request) {
return fetch(request).then(networkResponse => {
addToCache(request, networkResponse);
return networkResponse;
}).catch(_ => {
return getCacheResponse(request)
.then(cacheResponse => cacheResponse || Response.error());
});
}
self.addEventListener('fetch', event => {
event.respondWith(getNetworkOrCacheResponse(event.request));
});
function cleanOldCache() {
return caches.keys().then(cacheNames => {
return Promise.all(
cacheNames.filter(cacheName => (cacheName !== 'playbulb-candle'))
.map(cacheName => caches.delete(cacheName))
);
})
}
self.addEventListener('activate', event => {
event.waitUntil(cleanOldCache());
});