Tengo que hacer que mi página funcione como de costumbre, pero incluso cuando no hay conexión a la red. El único problema es que cada vez que se crea el trabajador, vuelve a cargar su archivo js, por lo que después de perder la conexión, arroja errores y no hace nada. tengo codigo:
let my_worker = null function start(from_v, to_v){ my_worker = new Worker('wwa_worker.js'); my_worker.postMessage({ from_val: from_v, to_val: to_v}); my_worker.onmessage = function (e) { result_field.value = e.data; } } function stop(){ my_worker.terminate(); my_worker = null }La idea principal es que tengo que almacenar en caché el archivo js del trabajador para que no se vuelva a cargar en esta sesión.
Como se sugiere en los comentarios, utilicé service worker.
Registre al trabajador en el archivo js principal:
// main.js navigator.serviceWorker.register('/service-worker.js');Y luego, cada vez que se llame a fetch, intente encontrar el recurso en el caché y cárguelo desde el servidor si no está presente ( el código de MDN , la versión con respaldo también está aquí):
// service-worker.js self.addEventListener('fetch', (event) => { event.respondWith( caches.match(event.request).then((resp) => { return resp || fetch(event.request).then((response) => { return caches.open('v1').then((cache) => { cache.put(event.request, response.clone()); return response; }); }); }) ); });