Feb1

Como cachear una página web en PHP

Javi Vicente programación
'; }?>

Todos sabemos las ventajas y desventajas que tiene cachear una página web, principalmente ventajas cuando trabajamos con bases de datos (MySQL, SQL Server, etc) aunque desventajas cuando suele cambiar la web muy a menudo. Por esta razón vamos a suponer que trabajamos con una página estática que coge datos de una base de datos que se actualizan una vez al día.

Lo primero que debemos hacer es crear un directorio llamado cache por ejemplo y darle permisos de escritura para todos los usuarios. Esto se hace porque normalmente crearemos el directorio con un usuario y apache se ejecuta con otro usuario:

chmod 777 cache

Ahora, dentro del directorio crearemos el fichero de la clase cache.class.php con el siguiente contenido:


cache_dir = $path;
$this->cache_time = $time;
$this->cleaning = $action;
$this->file = $this->cache_dir."cache_".md5(urlencode($_SERVER['REQUEST_URI'])); //md5, encriptado por seguridad

//condicional: Existencia del archivo, fecha expiración, acción
if (file_exists($this->file) && (fileatime($this->file)+$this->cache_time)>time() && $this->cleaning == false){

readfile($this->file);
exit();
} else {
$this->caching = true;
//grabamos buffer
ob_start();
}
}

function cerrar(){
if ($this->caching){
//Recuperamos información del buffer
$data = ob_get_clean();
// mostramos información
echo $data;
//borramos cache si existe
if(file_exists($this->file)){
unlink($this->file);
}
//escribimos información en cache
$fp = fopen( $this->file , 'w' );
fwrite ( $fp , $data );
fclose ( $fp );
}
}

} // Fin clase Cache
?>

Descargar el fichero .phps

Por último sólo queda crear el fichero index.php que llamará a esa clase y contendrá el código que deseamos cachear:


iniciar('cache/',1800,false);?>


Prueba cache


Hora cacheada:

cerrar();
//Cerramos cache

?>

Descargar el fichero .phps

Cualquier duda o sugerencia, se tendrá en cuenta.

zp8497586rq