Este fragmento de código comprueba si una página ha sido modificada desde que fue exhibida por última vez. Si es así, envía un encabezado «304 Not Modified» y sale, de lo contrario el contenido se renderiza. Anteponer este fragmento de código en la parte superior de cada archivo PHP al que desea aplicar este mecanismo de almacenamiento en caché inteligente. Especialmente útil si (tienes que) servir contenido estático a través de php y quieres que sea cacheado como HTML ordinario o CSS.
<?php //Consigue la ultima fecha de modificacion de este archivo $lastModified=filemtime(__FILE__); //Consigue el Hash unico de este archivo (etag) $etagFile = md5_file(__FILE__); //Consigue la cabecera HTTP_IF_MODIFIED_SINCE si la tiene $ifModifiedSince=(isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? $_SERVER['HTTP_IF_MODIFIED_SINCE'] : false); //Consigue la cabecera HTTP_IF_NONE_MATCH si la tiene (etag: hash unico del archivo) $etagHeader=(isset($_SERVER['HTTP_IF_NONE_MATCH']) ? trim($_SERVER['HTTP_IF_NONE_MATCH']) : false); //Pone la cabecera last-modified (ultima modificacion) header("Last-Modified: ".gmdate("D, d M Y H:i:s", $lastModified)." GMT"); //Pone la cabecera etag-header header("Etag: $etagFile"); //Se asegura de habilitar la cache header('Cache-Control: public'); //Verifica si la pagina ha cambiado. Si no, envia 304 y sale if (@strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE'])==$lastModified || $etagHeader == $etagFile) { header("HTTP/1.1 304 Not Modified"); exit; } //tu codigo echo "Esta pagina fue modificada: ".date("d.m.Y H:i:s",time()); ?>