AJAX y el horrible problema de IE6 con el cache

31 01 2010

Llevo días trabajando en una página que refresca cada cierto tiempo la data interna de la misma a través de la descarga de un JSON. Como siempre, todo funcionaba perfecto en todos los exploradores menos en IE6, en el cual la data no refrescaba; la única manera de obtener que se refrescara la data nueva era borrando los archivos temporales, incluyendo las archivos para navegación offline. Después de probar todos los tags meta con todas sus posibles combinaciones y no poder resolver el problema: encontré en un foro la solución en una sola línea “request.setRequestHeader(‘If-Modified-Since’, ‘Thu, 1 Jan 1970 00:00:00 GMT’)“. Este comando logra que la data descargada no se almacene en cache y se pueda refrescar la página.

Al final, mi código quedó de la siguiente manera:

function downloadUrl(url, callback) {
var request = window.ActiveXObject ?
new ActiveXObject('Microsoft.XMLHTTP') :
new XMLHttpRequest;
request.onreadystatechange = function() {
if (request.readyState == 4) {
request.onreadystatechange = doNothing;
callback(request.responseText, request.status);
}
};
request.open('GET', url, true);
request.setRequestHeader("If-Modified-Since", "Thu, 1 Jan 1970 00:00:00 GMT");
request.send(null);
}

Anuncios