AJAX Caching (Cacheo en AJAX)
Como siempre, nuevos problemas, en general, ademas de nuevos dolores de cabeza, traen nuevos aprendizajes. Fue el caso de AJAX en esta ocasión.
Básicamente lo que trataba de hacer era, cada una X cantidad de tiempo, revisar un script PHP externo en busca de un resultado nuevo. Todo iba perfecto, hasta que empece a notar que había un delay importante entre chequeo / resultado, no se reflejaba el estado real con el que traía el Javascript. En vano intente cosas como usar POST en vez de GET, o cosas mas alocadas como Reverse Ajax (como el framework Xaja). La solución era mucho mas simple, el cache.
Parecería que javascript guarda en cache los resultados de URL iguales, y recién los actualiza cuando uno hace un verdadero refresh (CTRL + F5) o cuando pasa un determinado tiempo.
La solucion:
Muy simple, alterar la URL de request, sin alterar nuestro pedido, por ej, si pedis un request a la url:
Simplemente debemos agregarle algún tipo de string que varíe en cada ejecución. Hay 2 opciones, un Math.random() o crear un objeto Date y usar el metodo getTime(), quedando así:
fecha_ahora = fecha.getTime();
funcionGetXML("http://192.168.1.1/request.php?id="+id+"&time="+fecha_ahora);
Voila
