const CACHE_NAME = 'v1_cache_mi_pwa'; // Lista de archivos que quieres que funcionen sin internet const urlsToCache = [ '/', '/index.html', '/plugins/regions.min.js', '/wavesurfer.min.js' ]; // 1. Evento Install: Guarda los archivos en la caché al instalar la PWA self.addEventListener('install', e => { e.waitUntil( caches.open(CACHE_NAME) .then(cache => { return cache.addAll(urlsToCache); }) .then(() => self.skipWaiting()) // Fuerza la activación inmediata ); }); // 2. Evento Activate: Limpia cachés antiguas para que siempre tengas la última versión self.addEventListener('activate', e => { const cacheWhitelist = [CACHE_NAME]; e.waitUntil( caches.keys().then(cacheNames => { return Promise.all( cacheNames.map(cacheName => { if (cacheWhitelist.indexOf(cacheName) === -1) { return caches.delete(cacheName); } }) ); }) ); }); // 3. Evento Fetch: Intercepta las peticiones y sirve desde la caché si existe self.addEventListener('fetch', e => { e.respondWith( caches.match(e.request) .then(res => { if (res) { // Si el archivo está en caché, lo devuelve sin ir a internet return res; } // Si no está, lo busca en la red return fetch(e.request); }) ); }); self.addEventListener('fetch', (e) => { e.respondWith(caches.match(e.request).then(res => res || fetch(e.request))); });