el tema de la cache es algo facil.
Solo tienes que enviar las cabeceras oportunas antes de mandar ningun dato al navegador del cliente.
Al principio de tu codigo escribe esto
Cita: header("Expires: ". gmdate("D, d M Y H:i:s") . " 06:00:00 GMT");
sleep(1);//Esperamos un segundo para que la fecha haya caducado
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");