const CACHE_NAME = 'uptime-monitor-v2'; const urlsToCache = [ '/', '/index.php', '/assets/css/custom.css', '/assets/js/main.js', '/manifest.json' ]; self.addEventListener('install', event => { event.waitUntil( caches.open(CACHE_NAME) .then(cache => cache.addAll(urlsToCache)) ); self.skipWaiting(); }); self.addEventListener('fetch', event => { // Bypassing API and external calls from cache if (event.request.url.includes('api/ping.php') || event.request.url.includes('api.telegram.org')) { return; } event.respondWith( caches.match(event.request) .then(response => { if (response) return response; return fetch(event.request); }) ); }); self.addEventListener('activate', event => { const cacheWhitelist = [CACHE_NAME]; event.waitUntil( caches.keys().then(cacheNames => { return Promise.all( cacheNames.map(cacheName => { if (cacheWhitelist.indexOf(cacheName) === -1) { return caches.delete(cacheName); } }) ); }).then(() => self.clients.claim()) ); });