-
Notifications
You must be signed in to change notification settings - Fork 2
/
sw.js
53 lines (49 loc) · 1.55 KB
/
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// Initialize required variables - Cache Assets
var shellCacheName = "pwa-todo-v1";
var filesToCache = [
"./",
"./index.html",
"./content/css/screen.min.css",
"./content/js/app.js",
"https://cdn.jsdelivr.net/npm/vue",
"https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.0/normalize.min.css"
];
// Listen to installation event
self.addEventListener("install", function(e) {
//console.log("[ServiceWorker] Install");
e.waitUntil(
caches.open(shellCacheName).then(function(cache) {
console.log("[ServiceWorker] Caching app shell");
return cache.addAll(filesToCache);
})
);
});
// Listen to activation event - Update Assets Cache
self.addEventListener("activate", function(e) {
//console.log("[ServiceWorker] Activate");
e.waitUntil(
// Get all cache containers
caches.keys().then(function(keyList) {
return Promise.all(
keyList.map(function(key) {
// Check and remove invalid cache containers
if (key !== shellCacheName) {
//console.log("[ServiceWorker] Removing old cache", key);
return caches.delete(key);
}
})
);
})
);
// Enforce immediate scope control
return self.clients.claim();
});
// Listen to fetching event - Serve App Shell Offline From Cache
self.addEventListener("fetch", function(e) {
//console.log("[ServiceWorker] Fetch", e.request.url);
e.respondWith(
caches.match(e.request).then(function(response) {
return response || fetch(e.request);
})
);
});