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