5 de cada 10 personas que leen mi blog, son la mitad :-P
Cuantas veces no has necesitado esto? A mi un par de veces, cuando tienes una programación que hace muchas consultas al MySQL o que depende mucho de ciertas funciones que son pesadas para el servidor y reciben muchas peticiones pueden sobrecargar al servidor llegando incluso a saturar.
Con esta clase que di por ahi, no recuerdo la dirección, si alguno me la recuerda os agradecería mucho, bueno vayamos con el código de la clase en PHP...
<?php
class cache
{
var $cache_dir = 'cache/'; // La carpeta en donde se guardaran los archivos estaticos
var $cache_time = '3600'; // El tiempo que duraran estos antes de ser actualizados
var $caching = false;
var $cleaning = false;
var $file = '';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']));if (file_exists($this->file) && (fileatime($this->file)+$this->cache_time)>time() && $this->cleaning == false){
readfile($this->file);
/*
$handle = fopen( $this->file , "r");
do {
$data = fread($handle, 8192);
if (strlen($data) == 0) {
break;
}
echo $data;
} while (true);
fclose($handle);
*/
exit();
} else {
$this->caching = true;
ob_start(); } }
function cerrar(){
if ($this->caching){
$data = ob_get_clean();
echo $data;
if(file_exists($this->file)){ unlink($this->file); }
$fp = fopen( $this->file , 'w' );
fwrite ( $fp , $data );
fclose ( $fp );
} } }
?>
Simplemente desde el archivo que deseas que se genere de forma estatica, al principio de todo debes de poner un include a esta clase, así como en el ejemplo:
<?php
include('cache.php'); // incluimos la clase
$cache = new cache(); // declaramos que crearemos una nueva cache
$cache->iniciar('cache/', 3600, false); // en el primer valor declaramos en la carpeta donde se guardara la cache, OJO: debe de tener permisos 777, despues declaramos el tiempo que durara la cache...
?>
<!-- aqui todo el HTML/PHP/MySQL del sitio -->
<?php
$cache->cerrar(); // Al final de TODO el documento poner esta linea, donde cerraremos la cache, todo lo que este despues de esta linea no se mostrara
?>
Y listo, tenemos nuestro sitio que se actualiza cada hora, muy útil para programaciones que realizan muchas consultas y que reciben una cantidad de visitas moderadas.
Entrada publicada por Alex a las 10:45 PM ~ Tracback URL
Aun no hay comentarios, puedes ser el primero!
Un grupo de 19 monos voladores construyeron esta pagina en 0.215 segundos
Alejandro Torres ~ Este diseño esta bajo una licencia CC 2.5