Como cachear una página web en PHP
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:
<?php
class cache
{
var $cache_dir; // path ó ruta donde se almacena la cache
var $cache_time; // tiempo en que expira la cache (en segundos)
var $caching = false; //true, para cachear
var $cleaning = false; //true, para limpiar y actualizar
var $file = ''; // path o ruta del script a cachear
function iniciar($path='',$time,$action=NULL){
global $_SERVER;
$this->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
?>
Por último sólo queda crear el fichero index.php que llamará a esa clase y contendrá el código que deseamos cachear:
<?php
//incluimos la clase cache
include('cache/cache.class.php');
//Creamos instancia de la cache
$cache1 = new cache();
//Con cache por media segundos.
$cache1->iniciar('cache/',1800,false);?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Prueba cache</title>
</head>
<body>
Hora cacheada: <?php echo date("d-m-Y G:i",time()); ?>
</body>
</html>
<?
$cache1->cerrar();
//Cerramos cache
?>
Cualquier duda o sugerencia, se tendrá en cuenta.
También puedes encontrarme en:
Comentarios Recientes
- TuJuerga: Es una exelente herramienta pero tedioso para realizarlo
- wister: Hola se me daño la pantalla de este celular como hago para conseguir otra o algun agente autorizado de la hp...
- Monik: Quiero poner mas de 1 archivo sitemap en mi sitio web cono hago???
- Xavi: Lo he leÃdo ya en muchos blogs, voy a tener que sumarme a la iniciativa en el mÃo. Entre la EconomÃa...
- jose luis: compre todo y no funciona ¿? esto es un a estafa
0 Comentarios
Ir al formulario | RSS Comentarios [?] | trackback uri [?]