Ver Mensaje Individual
  #6 (permalink)  
Antiguo 31/10/2011, 11:05
matiastv
 
Fecha de Ingreso: enero-2008
Mensajes: 36
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Como hacer cache a partes de una página

Pueden descargarlo desde aqui:
http://www.box.net/shared/arfzip740w


Explicación aquí: http://blog.unijimpe.net/cache-de-paginas-en-php/



Para hacer cache de nuestras páginas utilizaremos dos archivos cache.start.php que verificará si existe una copia en cache de la pagina en cuyo caso lo mostrará al usuario y cache.end.php que se encargará de crear el cache del página seleccionada.

Escribiendo los scripts
Entonces lo primero es crear el archivo cache.start.php en donde primero definimos la carpeta donde guardaremos los archivos de cache, el tiempo de expiración de estos archivos y la extensión de estos archivos. El siguiente paso es crear el nombre del archivo, esto lo hacemos basado en el nombre original del archivo y aplicándole encriptación MD5.

01.<?php
02.// Settings
03.$cachedir = 'cache/'; // directorio de cache
04.$cachetime = 86400; // duración del cache
05.$cacheext = 'cache'; // extensión de cache
06.// script a procesar
07.$cachepage = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
08.$cachefile = $cachedir.md5($cachepage).'.'.$cacheext;
09.// calculamos el tiempo del cache
10.if (@file_exists($cachefile)) {
11. $cachelast = @filemtime($cachefile);
12.} else {
13. $cachelast = 0;
14.}
15.@clearstatcache();
16.// Mostramos el archivo si aun no vence
17.if (time() - $cachetime <$cachelast) {
18. @readfile($cachefile);
19. exit();
20.}
21.ob_start();
22.?>
Notar que si el archivo aun no ha expirado, le mostramos al usuario la copia que tenemos en cache y cancelamos la ejecución del resto del script.

El siguiente paso es crear el archivo cache.end.php, este archivo se ejecutará si y solo asi el script llega al final, lo cual indica que aun no tiene una copia en cache, para ello creamos el archivo y dentro del mismo escribimos el contenido del buffer.

01.// Generamos el nuevo archivo cache
02.$fp = @fopen($cachefile, 'w');
03.// guardamos el contenido del buffer
04.@fwrite($fp, ob_get_contents());
05.@fclose($fp);
06.ob_end_flush();
Modo de Utilización
El uso de este método de cache es sencillo, primer debemos crear la carpeta donde se guardarán los archivos de cache y luego incluir cache.start.php al inicio y cache.end.php al final del script a procesar.

01.<?php include("cache.start.php"); ?>02.<html>
03....
04.</html>
05.<?php include("cache.end.php"); ?>