123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- console.log('start')
- const CASH = 'ver-1'
- const urlsToCash = ['index.html', 'offline.html']
- const self = this;
- self.addEventListener('install', (e) => {
- console.log('self wait..')
- e.waitUntil(
- caches.open(CASH)
- .then( cache => {
- console.log('open cash', cache)
- return cache.addAll(urlsToCash)
- })
- )
- })
- self.addEventListener('fetch', (e) => {
- e.respondWith(
- caches.match(e.request)
- .then(() => {
- return fetch(e.request)
- .catch(() => caches.match('offline.html'))
- })
- )
- })
- self.addEventListener('activate', (e) => {
- const cacheWersions = [];
- cacheWersions.push(CASH);
- e.waitUntil(
- caches.keys().then(cachNames => Promise.all(
- cachNames.map(cacheName => {
- if(!cacheWersions.includes(cacheName)){
- return caches.delete(cacheName);
- }
- }
- )
- ))
- )
-
- })
- // /* eslint-disable no-restricted-globals */
- // // This service worker can be customized!
- // // See https://developers.google.com/web/tools/workbox/modules
- // // for the list of available Workbox modules, or add any other
- // // code you'd like.
- // // You can also remove this file if you'd prefer not to use a
- // // service worker, and the Workbox build step will be skipped.
- // import { clientsClaim } from 'workbox-core';
- // import { ExpirationPlugin } from 'workbox-expiration';
- // import { precacheAndRoute, createHandlerBoundToURL } from 'workbox-precaching';
- // import { registerRoute } from 'workbox-routing';
- // import { StaleWhileRevalidate } from 'workbox-strategies';
- // clientsClaim();
- // // Precache all of the assets generated by your build process.
- // // Their URLs are injected into the manifest variable below.
- // // This variable must be present somewhere in your service worker file,
- // // even if you decide not to use precaching. See https://cra.link/PWA
- // precacheAndRoute(self.__WB_MANIFEST);
- // // Set up App Shell-style routing, so that all navigation requests
- // // are fulfilled with your index.html shell. Learn more at
- // // https://developers.google.com/web/fundamentals/architecture/app-shell
- // const fileExtensionRegexp = new RegExp('/[^/?]+\\.[^/]+$');
- // registerRoute(
- // // Return false to exempt requests from being fulfilled by index.html.
- // ({ request, url }) => {
- // // If this isn't a navigation, skip.
- // if (request.mode !== 'navigate') {
- // return false;
- // } // If this is a URL that starts with /_, skip.
- // if (url.pathname.startsWith('/_')) {
- // return false;
- // } // If this looks like a URL for a resource, because it contains // a file extension, skip.
- // if (url.pathname.match(fileExtensionRegexp)) {
- // return false;
- // } // Return true to signal that we want to use the handler.
- // return true;
- // },
- // createHandlerBoundToURL(process.env.PUBLIC_URL + '/index.html')
- // );
- // // An example runtime caching route for requests that aren't handled by the
- // // precache, in this case same-origin .png requests like those from in public/
- // registerRoute(
- // // Add in any other file extensions or routing criteria as needed.
- // ({ url }) => url.origin === self.location.origin && url.pathname.endsWith('.png'), // Customize this strategy as needed, e.g., by changing to CacheFirst.
- // new StaleWhileRevalidate({
- // cacheName: 'images',
- // plugins: [
- // // Ensure that once this runtime cache reaches a maximum size the
- // // least-recently used images are removed.
- // new ExpirationPlugin({ maxEntries: 50 }),
- // ],
- // })
- // );
- // // This allows the web app to trigger skipWaiting via
- // // registration.waiting.postMessage({type: 'SKIP_WAITING'})
- // self.addEventListener('message', (event) => {
- // if (event.data && event.data.type === 'SKIP_WAITING') {
- // self.skipWaiting();
- // }
- // });
- // Any other custom service worker logic can go here.
|