cache de navegador pillada en la carga de un xml y script de anulacion de cache inservibles

Todos los desarrolladores hemos tenido siempre problemas con la maldita cache, haces un cambio en un archivo y el navegador sigue mostrando la version anterior

Este es el menor de nuestros males ya que borrando la cache solucionado, el problema comienza a agravarse cuando se trata de una pagina con contenido dinamico y no puedes ir a casa de los usuarios a borrarles la cache cada vez que entren.

Existen unas lineas de codigo guapisimas en php y en html para indicar al navegador que no cachee la pagina en cuestion de tal manera que cada vez que le damos al f5 ya podemos ver todos los cambios en el contenido dinamico

<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Fecha en el pasado
?>

Hasta aqui todo muy normal y un articulo mas visto que el tebeo, pero mi problema vino en la carga de un xml; los cambios en la pagina eran reflejados pero cuando se modificaba dinamicamente el contenido de este xml seguia viendo la version anterior. Le añadi las famosas lineas de indicar no guardar en cache la pagina y cual es mi sorpresa al ver que pasa de mi olimpicamente …

Despues de una hora de insultos me acorde de un truquillo muy chulo que seguramente todos conozcais pero yo tarde en acordarme de él … para forzar a la cache a cargar siempre el contenido de dicho xml o de cualquier archivo que se carga dentro de otro basta con añadirle a la url de carga una variable “fantasma” y le pasamos de valor la fecha y la hora actual de tal manera que cada vez que hagamos f5 la variable siempre va a ser diferente y el navegador reconoce la url como diferente

url: tu_url.xml?date=31/01/2012 14:56:59

Concatenamos en la url como si se tratara de un paso de valores por get, donde la variable date que le pasamos ni existe ni nadie espera recibirla ya que llamamos a un xml

var exd = new Date();
downloadUrl("google_map/xml.xml?date="+exd, function(doc) {

En concreto esto me ha pasado en el desarrollo del mapita de google que lee de un xml los puntos, y el xml se genera a partir de mySQL desde PHP … aqui esta el articulo sobre el dichoso mapa de google con clusters y la casa santa 😀 https://coudlain.wordpress.com/2012/07/31/google-maps-cluster-xml-agrupar-iconos-marcas-chinchetas-para-que-no-se-superpongan-con-javascript-by-geocodezip/

Espero que a alguien le sirva de ayuda y que si algun dia me encontrais por la calle no me deis una paliza por este articulo, un saludo

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s