37pixels TinyCacher
Como dijimos alguna vez, otra de las ideas de nuestro blog era compartir algunos de los scripts y plugins que desarrollamos con el resto de la comunidad; y empezamos con TinyCacher una pequeña clase de PHP que utilizamos en algunos proyectos para crear un cache de archivos, aliviando la carga del servidor.
¿Qué hace?
TinyCacher se ejecuta al principio de una página y comprueba si existe en cache una versión del URL mostrado con un tiempo menor al tiempo máximo de cache. Si es así, se incluye automáticamente esta versión. En caso contrario, leé el documento y guarda una versión del resultado en el directorio de cache, para que sea mostrada durante el tiempo máximo especificado.
¿En qué casos es útil?
- Para evitar una consulta repetitiva a la BD
- Para evitar el proceso una y otra vez de un script demasiado pesado
- Para aliviar la carga del servidor al haber una gran cantidad de visitas
¿Cómo se usa?
- Descarga TinyCacher.
- Descomprime el archivo
- Edita en el archivo
tinycacher.php
las variables que indican el directorio de cache ($cache_dir
) y el tiempo de cache ($cache_time
), reemplazandolas por las correspondientes. - Sube el archivo
tinycacher.php
a tu servidor - Incluye el archivo al principio de cualquier página que quieras cachear. Por ejemplo:
include("tinycacher.php");
- Inicia TiniCacher antes de cualquier otro código en la página. Por ejemplo:
$ch = new cache();
- Finaliza el cache ejecutando la función close al final del código de la página. Por ejemplo:
$ch->close();
En el archivo descargable se incluye un ejemplo de uso, llamado ejemplo.php
.
A tener en cuenta:
Dado que lo que se guarda es siempre el resultado del código ejecutado al abrir el documento, cualquier variable que pudiese depender del tiempo o de, por ejemplo, un usuario, no funcionaría correctamente. Por ejemplo, si incluyésemos en un rincón la hora actual mostrada con PHP, al crearse la versión cache de ese documento se guardaría solo el HTML resultante de esa página, por lo que durante el tiempo máximo que se haya especificado, siempre se vería la misma hora al mostrar dicha página.
Algunos de estos problemas pueden ser solucionados con javascript, pero en otros casos se requeriría una solución de cache más compleja.