El cache de Smarty

Smarty es un sistema de plantillas diseñado para acelerar la presentación de las páginas html. Para poder emplear la cache simplemente debes instalar smarty en tu frameword de desarrollo e introducir las siguientes líneas:

$plantilla = new Smarty;
$plantilla->caching = 1; //Activa la cache
$plantilla->display(‘planilla.tpl’); //El fichero planilla.tpl debe contener la planilla a devolver

También es posible llamar a

$html = $plantilla->fetch(‘planilla.tpl’);

Para no volcar al navegador el html y tenerlo almacenado en la variable $html.

Antes de llamar a display o a fetch podemos modificar el comportamiento del sistema de caché de smarty

Por ejemplo:

$plantilla->cache_dir = ‘/tmp/smarty/’;

Grabará las planillas cacheadas en este directorio (smarty cachea el contenido en disco por defecto)

$plantilla->cache_lifetime = 300;

El contenido permanece en cache 5 minutos (300 segundos) antes de ser reemplazado. El valor por defecto es una hora.

$plantilla->compile_check = true;

Verifica si la plantilla ha sido actualizada desde la última vez que se regeneró la caché. Introduce una pequeña sobrecarga al tener que averiguar y comparar la fecha de modificación de la plantilla.

$plantilla->force_compile = true;

Siempre regenerará la cache

$plantilla->is_cached(‘plantilla.tpl’);

Detecta si una plantilla está en el cache o no.

$plantilla->assign(‘variable’,$var);

La plantilla puede ahora leer la variable $var, con el nombre {variable} generando así contenido realmente dinámico

$plantilla->clear_cache(‘plantilla.tpl’);

Elimina la cache para esta plantilla

$plantilla->clear_all_cache();

Elimina todas las caches (en el directorio de cache)

Es posible eliminar el cache por grupos de plantillas. Estos grupos de plantillas se pueden definir de la siguiente manera:

$plantilla->display(‘index.tpl’,’sports|basketball’);

Y entonces borrar la caché del grupo sports|basketball así:

$smarty->clear_cache(null,’sports|basketball’);

o borrar sólo el index.tpl del grupo sports|basketball así:

$smarty->clear_cache(‘index.tpl’,’sports|basketball’);

Funcionando como una especie de espacio de nombres

Es posible introducir contenido no cacheable dentro de una plantilla cacheada utilizando {insert}.

{insert} funciona de una manera idéntica a {include} con la particularidad de su comportamiento ante el cache.

Veamos como funciona con un ejemplo

{insert name=”obtenerPublicidad” localizacion=#banner_location_id# id=#site_id#}

Lo que hará a continuación smarty será llamar a la funcion insert_obtenerPublicidad, que debes tener definida en tu código, pasandole como argumento un array asociativo.

Suponiendo que #banner_location_id# valga 5 y #site_id# valga 8. Se ejecutará:

insert_obtenerPublicidad(array(‘localizacion’= > ‘5’ , ‘id’= &gt ‘8’));

y lo que devuelva esta función será añadido en la plantilla.

Para saber más sobre smarty y su sistema de cache visita su página oficial.

Otros métodos para acelerar tu servidor web a otros niveles son memcache, x-cache o apc.