Pregunta
¿Qué sistema de cache para PHP usar?
Responder esta pregunta por dudin el 2009-02-24
Tengo un sitio establecido hace algún tiempo y el tráfico va en aumento, no creo que el servidor donde está alojado sea lo suficientemente potente como soportar una carga mucho mayor; por tanto, pensando en optimizar el desempeño de la aplicación deseo implementar un sistema de cache. De momento uso un sistema de plantillas bastante simple, parecido a phpTemplate. ¿Cuál usar y cómo implementarlo?
Respuestas
Pues me ha dado muy buenos resultados usar Cache_Lite, es un sistema muy fácil de implementar. Ante todo lo debes instalar mediante el comando pear:
Luego en un fichero que sea común a toda la aplicación (puede ser el mismo controlador frontal), cada página debe tener su propio identificador id a la hora de guardar y recuperar de la cache cada una de las páginas del sitio. Es importante que este trozo de código se ejecute lo antes posible para evitar que se ejecuten operaciones innecesarias que ya se encuentren guardadas en cache.
Finalmente en el sistema de plantillas (phpTemplate), agregar:
Nota: No olvidar dar permiso de escritura para apache el directorio /cache/ (775)
Referencias: http://pear.php.net/manual/en/package.caching.cache-lite.intro.php
pear install cache-lite
Luego en un fichero que sea común a toda la aplicación (puede ser el mismo controlador frontal), cada página debe tener su propio identificador id a la hora de guardar y recuperar de la cache cada una de las páginas del sitio. Es importante que este trozo de código se ejecute lo antes posible para evitar que se ejecuten operaciones innecesarias que ya se encuentren guardadas en cache.
<?php
require_once("Cache/Lite.php");
$options = array(
'cacheDir' => '/cache/',
'lifeTime' => 7200
);
$SESSION['cache'] = $Cache_Lite = new Cache_Lite($options );
$SESSION['id'] = $id ='page'.str_replace(array('/', '.'), array('', '' ),$_SERVER['REQUEST_URI']);
if ($data = $Cache_Lite->get($id)){
print $data.'<!-- Cache -->';
exit;
}
?>
Finalmente en el sistema de plantillas (phpTemplate), agregar:
<?php
ob_start();
ob_implicit_flush(0);
$datos = ob_get_clean();
$SESSION['cache']->save($datos, $SESSION['id']); //Agregado
print $datos;
?>
Nota: No olvidar dar permiso de escritura para apache el directorio /cache/ (775)
Referencias: http://pear.php.net/manual/en/package.caching.cache-lite.intro.php
por Anónimo el 2009-04-24
Para instalar la versión 1.7.7 de Cache Lite
pear install Cache_Lite-1.7.7
por Anónimo el 2009-05-14



