martes, 4 de mayo de 2010

Problemas de cache con Internet Explorer

Un problema clásico de Intenet Explorer es que cuando realizamos una petición AJAX, aunque se modifique los datos en la base de datos, el navegador siempre nos muestra la misma página. Esto es debido a que Internet Explorer tiene una caché interna que no se carga como debiera.

Vamos a mostrar dos posibles soluciones un en la lado de cliente y en otro en lado del servidor


header('Expires: Sun, 19 Nov 1978 05:00:00 GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');


Con estas lineas no aseguramos que no se guarde la cache y que en cada petición tenga que pedir los datos.

 
var num=Math.random();
ajax=objetoAjax();
ajax.open("GET", "archivo.php?aleatorio="+aleatorio, true);
ajax.onreadystatechange=function() {
if (ajax.readyState==4)
{
document.getElementById("resultado").innerHTML=ajax.responseText;
}
}
ajax.send(null);


Otro posible solución es enviar una variable con un dato diferente cada vez ya sea con random o la hora actual