elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  Problema con archivos cacheados con Service Workers en javascript.[SOLUCIONADO]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con archivos cacheados con Service Workers en javascript.[SOLUCIONADO]  (Leído 425 veces)
@XSStringManolo
<svg/onload=alert()>
Colaborador
***
Desconectado Desconectado

Mensajes: 2.279


Turn off the red ligth


Ver Perfil WWW
Problema con archivos cacheados con Service Workers en javascript.[SOLUCIONADO]
« en: 22 Octubre 2020, 21:48 pm »

Me surge un problema raro. A ver si teneis idea.

Tengo una función que cachea todos los archivos de la web.

Le añadí un parámetro TTL (Time To Live) para poder indicarle cuando tiempo se quiere que el caché esté activo.

Lo que hago es guardar la fecha (en localStorage)  actual en segundos y sumarle el TTL.

Entonces comparo la fecha actual con la fecha guardada en localStorage para saber si el caché expiró.

El problema surge que una vez que cacheo en el navegador los archivos de la web, la comprobación no se ejecuta. De ejecutarse, se vería que ya pasó el tiempo indicado en TTL en milisegundos (le puse 100000 que equivale a minuto y medio). Y al pasar ese tiempo el código borra el cache y resetea el localStorage para que en la siguiente carga se vuelve a cachear todo de nuevo. (Mi intención es que el caché se renueve tras el tiempo pasado por si existen nuevos cambios.)

Está aquí live:
https://fastframework.stringmanolo.ga/dev/index.html

A ver si teneis idea. Una vez cacheado no muestra el mensaje.

Aquí se hace la llamada con el nombre del ServiceWorker y el tiempo que quiero cachear en segundos:
https://github.com/StringManolo/ff/blob/master/dev/main.js#L205

Nada más ejecutarse la llamada debería correr el alert en esta línea:
https://github.com/StringManolo/ff/blob/master/dev/ff.js#L46
Pero no salta el alert una vez cacheada la web.

Resumiendo: Tras la segunda vez que cargas la web debería mostrar el alert que está en las primeras lineas de main.js y no lo muestra. Pero si funciona la web. Wtf?
Si es culpa de los service workers(diría que no porque corren en otro hilo, no en el mismo que el main.js) probé también comentando todos los alerts y sigue sin ir.

Tengo un script en main.js que funciona sin cachear la web, pero con la web cacheada no me funciona el script que comprueba si ya pasó el tiempo que debería estar en caché (y por tanto borrarla)

Asique el problema que tengo es que no puedo borrar el caché del navegador desde la última linea de código de main.js que llamada a iniciar el caché.
En ff.js es cuando debería eliminarse el caché y poner localStorage.cacheTTL = 0; pero este script no va y ni idea de porque no.


SOLUCIÓN: Borrar "bien" el caché del navegador, localStorage y quitar del registro el ServoceWorker.

Habilitar CORS para que se puedan fechear los archivos a cachear en el propio dominio.


« Última modificación: 23 Octubre 2020, 02:59 am por @XSStringManolo » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines