diff --git a/src-pwa/custom-service-worker.js b/src-pwa/custom-service-worker.js index 587c207..be847ef 100644 --- a/src-pwa/custom-service-worker.js +++ b/src-pwa/custom-service-worker.js @@ -15,7 +15,7 @@ if (!workbox) { } if (workbox) { - workbox.core.setCacheNameDetails({prefix: "freeplanet"}); + workbox.core.setCacheNameDetails({ prefix: "freeplanet" }); /** * The workboxSW.precacheAndRoute() method efficiently caches and responds to @@ -26,7 +26,97 @@ if (workbox) { workbox.precaching.suppressWarnings(); workbox.precaching.precacheAndRoute(self.__precacheManifest, {}); - workbox.routing.registerRoute(/^http/, workbox.strategies.networkFirst(), 'GET'); + // workbox.routing.registerRoute(/^http/, workbox.strategies.networkFirst(), 'GET'); + + workbox.routing.registerRoute( + new RegExp(/.*(?:googleapis|gstatic)\.com.*$/), + workbox.strategies.staleWhileRevalidate({ + cacheName: 'google-fonts', + plugins: [ + new workbox.expiration.Plugin({ + maxAgeSeconds: 30 * 24 * 60 * 60, + }), + ] + }) + ); + + workbox.routing.registerRoute( + new RegExp(/.*\/(?:statics\/icons).*$/), + workbox.strategies.cacheFirst({ + cacheName: 'image-cache', + plugins: [ + new workbox.expiration.Plugin({ + maxAgeSeconds: 30 * 24 * 60 * 60, + }), + ] + }) + ); + + workbox.routing.registerRoute( + new RegExp(/.*\/(?:css|font).*/), + workbox.strategies.cacheFirst({ + cacheName: 'css-fonts', + plugins: [ + new workbox.expiration.Plugin({ + maxAgeSeconds: 30 * 24 * 60 * 60, + }), + ] + }) + ); + + + workbox.routing.registerRoute( + new RegExp('https://cdnjs.coudflare.com/ajax/libs/material-design-lite/1.3.0/material.indigo-pink.min.css'), + workbox.strategies.staleWhileRevalidate({ + cacheName: 'material-css', + plugins: [ + new workbox.expiration.Plugin({ + maxAgeSeconds: 30 * 24 * 60 * 60, + }), + ] + }) + ); + +// Storage + workbox.routing.registerRoute( + new RegExp(/.*(?:storage\.freeplanet)\.app.*$/), + workbox.strategies.staleWhileRevalidate({ + cacheName: 'storage', + plugins: [ + new workbox.expiration.Plugin({ + maxAgeSeconds: 30 * 24 * 60 * 60, + // Only cache 10 requests. + maxEntries: 200, + }), + ] + }) + ); + + workbox.routing.registerRoute( + new RegExp(/.*\/(?:statics).*$/), + workbox.strategies.cacheFirst({ + cacheName: 'statics', + plugins: [ + new workbox.expiration.Plugin({ + maxAgeSeconds: 10 * 24 * 60 * 60, + // Only cache 10 requests. + }), + ] + }) + ); + + workbox.routing.registerRoute( + new RegExp(/^http/), + workbox.strategies.networkFirst({ + cacheName: 'all-stuff', + plugins: [ + new workbox.expiration.Plugin({ + maxAgeSeconds: 10 * 24 * 60 * 60, + // Only cache 10 requests. + }), + ] + }) + ); } @@ -34,15 +124,15 @@ if ('serviceWorker' in navigator) { console.log('***************** Entering in custom-service-worker.js:') - self.addEventListener('fetch', function (event) { - console.log('[Service Worker] Fetching something ....', event); - console.log('event.request.cache=', event.request.cache) - if (event.request.cache === 'only-if-cached' && event.request.mode !== 'same-origin') { - console.log('SAME ORIGIN!', event); - return; - } - event.respondWith(fetch(event.request)); - }); + // self.addEventListener('fetch', function (event) { + // console.log('[Service Worker] Fetching something ....', event); + // console.log('event.request.cache=', event.request.cache) + // if (event.request.cache === 'only-if-cached' && event.request.mode !== 'same-origin') { + // console.log('SAME ORIGIN!', event); + // return; + // } + // event.respondWith(fetch(event.request)); + // }); } diff --git a/src/index.template.html b/src/index.template.html index 5e4fb15..cb87612 100644 --- a/src/index.template.html +++ b/src/index.template.html @@ -10,7 +10,7 @@ - +