-
Notifications
You must be signed in to change notification settings - Fork 0
/
service-worker-base.js
61 lines (52 loc) · 1.74 KB
/
service-worker-base.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
54
55
56
57
58
59
60
61
// Import Workbox script
importScripts(
'https://storage.googleapis.com/workbox-cdn/releases/3.6.1/workbox-sw.js');
if (workbox) {
console.log(`Yay! Workbox is loaded 🎉`);
} else {
console.log(`Boo! Workbox didn't load 😬`);
}
// let workbox-cli inject precache manifest
workbox.precaching.precacheAndRoute([]);
// Route resource requests with different caching strategies
// Workbox recommendation for Google Fonts
// Cache the Google Fonts stylesheets with a stale-while-revalidate strategy.
workbox.routing.registerRoute(
/^https:\/\/fonts\.googleapis\.com/,
workbox.strategies.staleWhileRevalidate({
cacheName: 'google-fonts-stylesheets',
})
);
// Cache the underlying font files with a cache-first strategy for 1 year.
workbox.routing.registerRoute(
/^https:\/\/fonts\.gstatic\.com/,
workbox.strategies.cacheFirst({
cacheName: 'google-fonts-webfonts',
plugins: [
new workbox.cacheableResponse.Plugin({ statuses: [0, 200], }),
new workbox.expiration.Plugin({
maxAgeSeconds: 60 * 60 * 24 * 365, // 1 year
maxEntries: 3, // few entries is enough for this small app
})
]
})
);
// Static files e.g. HTML, JS, CSS, PNG
workbox.routing.registerRoute(
/\.(?:html|js|css|png)$/,
// use cache first
workbox.strategies.cacheFirst({ cacheName: 'static-resources' })
);
// App manifest JSON file
workbox.routing.registerRoute(
'/manifest.json',
// manifest.json has little to no change since init app launch
workbox.strategies.cacheFirst({ cacheName: 'app-manifest' })
);
//wait for service work to be installed
self.addEventListener('install', event => {
console.log('service worker installed');
});
self.addEventListener('activate', event => {
console.log('service worker activated');
});