[Solucionado] - Cache en Firefox 3

Crear páginas para Gecko, diferencias con IE, articulos de interés y recursos en español
linuxact
Recién llegado
Recién llegado
Mensajes: 3
Registrado: Vie Jul 31, 2009 11:26 am

[Solucionado] - Cache en Firefox 3

Mensajepor linuxact » Vie Jul 31, 2009 11:31 am

Hola. Tengo un problema con el cache de Firefox 3.x, no logro hacer que no guarde las páginas en el navegador y así evitar que el usuario se mueva con los botones "Anterior/Siguiente" sin visitar de nuevo el servidor.
El problema es que si hay unas páginas en secuencia (1, 2, 3...) que el usuario sigue secuencialmente, pero en una de ellas le da por visitar el historial, hacer cambios, y de nuevo ir hacia atrás con el botón "Anterior" el navegador no actualiza el contenido que el usuario ha cambiado y visualiza los datos anteriores. Muy peligroso para carritos de la compra, por ejemplo.
He visto este blog y me ha asustado: cachea hasta las páginas seguras (HTTPS):
http://blogs.imeta.co.uk/JDeabill/archi ... 4/303.aspx

Estas etiquetas en IE sí funciona (pide conformidad de actulizar la página al usuario), pero en Firefox 3 no.
<META HTTP-EQUIV="Cache-Control" CONTENT ="no-cache">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">

También he probado desde páginas jsp de java:
response.setHeader("Cache-Control","no-cache");
response.setHeader("Pragma","no-cache");
response.setDateHeader ("Expires", 0);

¿Alguna sugerencia?

linuxact
Recién llegado
Recién llegado
Mensajes: 3
Registrado: Vie Jul 31, 2009 11:26 am

Re: Cache en Firefox 3

Mensajepor linuxact » Mar Ago 04, 2009 6:46 am

He encontrado una solución a esto, aunque requiere de técnicas que a lo mejor no todo el mundo puede llevar a cabo. La solución consiste en añadir un evento onload al body y asignarle una función de javascript, por ejemplo CargaDatos(); Dentro de esta función iría una llamada mediante AJAX a un servlet o página JSP (en mi caso, que manejo servidor de java). Dicha llamada llevaría un parámetro de tipo GET el cual sería la fecha y hora actual, así la llamada nunca quedaría guardada en el cache al ser siempre una llamada diferente.

Mediante AJAX se recoge el resultado en formato HTML que envíe el servlet o JSP, el cual sería la parte de la página que yo quiero que no se cachee, el resto me da igual ya que son banners y texto y fotos estáticas.

Así funciona, pero vaya mal que FireFox haya decidido no admitir las etiquetas Cache-Control y Expires, más trabajo extra.

linuxact
Recién llegado
Recién llegado
Mensajes: 3
Registrado: Vie Jul 31, 2009 11:26 am

Re: [Solucionado] - Cache en Firefox 3

Mensajepor linuxact » Mié Ago 05, 2009 10:54 am

Pues no tampoco funciona eso. Firefox no carga el evento onload() cuando usas las flechas de izquierda/derecha del navegador, y si no lo carga no se puede llamar a ninguna función de javascript con ese método.

Pero bueno, por fín he encontrado algo que sí funciona, y comprobado:
http://www.thomasfrank.se/when_onload_fails.html

Hay que copiar el código javascript que hay en esa página en las páginas que queremos que recarguen tanto al moverse con las flechas del navegador como si viene de otra página la primera vez. Tiene dos métodos que disparan dos eventos, yo solo le he hecho caso al de reload, el otro ya carga de por sí la página la primera vez que se visualiza.

Después he usado la parte de AJAX que comentaba en mi anterior POST para que al solicitar servicios a un servlet visite siempre el servidor, ya que sino también la cachearia el Firefox.

Saludos!


Volver a “Desarrollo web (HTML/CSS/JS, accesibilidad...)”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado