jueves, 30 de mayo de 2013

Evitar Cache del Navegador con Javascript

Antes que nada una breve explicación del problema:
El navegador guarda en "caché" una copia de la página web, esto para evitar hacer un "request" al servidor cada vez que se visita, esto es bueno en la mayoría de las circunstancias ya que agiliza el cargar la página WEB (por supuesto que ni siquiera pregunta al servidor por tanto no que se ejecute una llamada HTTP en este sea GET sea POST...), pero si estas desarrollando esto llega a ser un dolor de cabeza.

Mi problema (si deseas leerlo):
Estoy trabajando por el momento con un modulo FlyPort, el cual crea un WebServer por medio de AdHoc, y a través de llamadas GET y POST controlo acciones en el Microcontrolador PIC embebido. El problema está en que si el BENDITO navegador guarda la pagina WEB en caché y la despliega en lugar de ejecutar un GET nunca lograré invocar ningún evento en el Micro. Lo cual me convierte en HULK  =( cada vez que pasa.

Este problema se me ha presentado y una solución que he implementado y que me ha funcionado al 100% para "evitar" que el navegador despliegue repetidamente la pagina en caché, es de agregar un parametro al azar que haga que cada URL siempre sea diferente y unica y así "forzar" al navegador a siempre hacer una llamada el server.




Por ejemplo: 

Deseas ejecutar la URL 
simsynchro.html?cmd=5 pero al momento de ejecutarla no ves cambios, esto porque el navegador ha guardado en caché la respuesta del server a esta URL. Agregando un parámetro al azar solucionas todo, por tanto:


var url = "simsynchro.html?cmd=5";
var date = new Date();
var dummyDateParam = "&dummy=" + (date.getMonth() + 1) + "/" + date.getDate() + "/" + date.getFullYear() + "_" + date.getTime();

url += dummyDateParam;
window.location = url;

Deberías crear una función que te agregue de manera automática el parámetro y listo.



TAGS:

  • Avoid Browser Caché
  • El navegador guarda caché
  • Refrescar Javascript
  • Navegador no ejecuta script
  • Javascript no se ejecuta
  • Evitar que el navegador guarde caché
  • FlyPort AJAX
  • AJAX no funciona
  • AJAX no se ejecuta
  • FlyPort not executing GET

No hay comentarios:

Publicar un comentario