Get Smarty

Donate

Paypal

Smarty Icon

You may use the Smarty logo according to the trademark notice.

Smarty Template Engine Smarty Template Engine

For sponsorship, advertising, news or other inquiries, contact us at:

Sites Using Smarty

Advertisement

Chapter 14. Cache

Caching es usado para aumentar la velocidad de llamada de display() o fetch() salvando esto en un archivo de salida. Si hay una versión de cache disponible para la llamada, este es mostrado en vez de regresar la salida de datos. Caching puede hacer cosas tremendamente rápidas, especialmente templates con largo tiempo de computo. Desde la salida de datos de display() o fetch() está en cache, un archivo de cache podría ser compuesto por diversos archivos de templates, archivos de configuración, etc.

Dado que sus templates son dinámicos, es importante tener cuidado de como usa la cache y por cuanto tiempo. Por ejemplo, si usted esta mostrando la pagina principal de su web site y esta no tiene cambios muy frecuentes en su contenido, esta puede funcionar bien en la cache por una hora o mas. por otro lado, si usted esta mostrando una pagina con un mapa de tiempo que contenga nueva información por minuto, no tiene sentido hacer cache nuestra página.

Configurando el Cache

Lo primero que se tiene que hacer es habilitar el cache. esto es configurar $caching = true (o 1.)

Example 14.1. Habilitando Cache


<?php
require('Smarty.class.php');
$smarty = new Smarty;

$smarty->caching = true;

$smarty->display('index.tpl');
?>

    

Con el caching habilitado, la llamada a la función display('index.tpl') traera el template como siempre, pero también salvara una copia en el archivo de salida (una copia de cache) en el $cache_dir. En la proxima llamada de display('index.tpl'), la copia en cache sera usada en vez de traer nuevamente el template.

Nota Técnica

Los archivos en el $cache_dir son nombrados similarmente al nombre del archivo de template. Aunque ellos tengan una extensión ".php", ellos no son realmente scripts ejecutables de php. No edite estos archivos!

Cada pagina en cache tiene un periodo de tiempo limitado determinado por $cache_lifetime. El default del valor es 3600 segundos, o 1 hora. Después de este tiempo expira, el cache es regenerado. Es posible dar tiempos individuales para caches con su propio tiempo de expiración para configuración $caching = 2. Vea la documentación en $cache_lifetime para mas detalles.

Example 14.2. Configurando cache_lifetime por cache


<?php
require('Smarty.class.php');
$smarty = new Smarty;

$smarty->caching = 2; // lifetime is per cache

// set the cache_lifetime for index.tpl to 5 minutes
$smarty->cache_lifetime = 300;
$smarty->display('index.tpl');

// set the cache_lifetime for home.tpl to 1 hour
$smarty->cache_lifetime = 3600;
$smarty->display('home.tpl');

// NOTE: the following $cache_lifetime setting will not work when $caching = 2.
// The cache lifetime for home.tpl has already been set
// to 1 hour, and will no longer respect the value of $cache_lifetime.
// The home.tpl cache will still expire after 1 hour.
$smarty->cache_lifetime = 30; // 30 seconds
$smarty->display('home.tpl');
?>

    

Si $compile_check está habilitado, cada archivo de template y archivo de configuración que está involucrado con el archivo en cache es checado por modificadores. Si alguno de estos archivos fue modificado desde que el ultimo cache fue generado, el cache es regenerado inmediatamente. Esto es una forma de optimizar ligeramente el rendimiento de las cabeceras, dejar $compile_check determinado false.

Example 14.3. Habilitando $compile_check


<?php
require('Smarty.class.php');
$smarty = new Smarty;

$smarty->caching = true;
$smarty->compile_check = true;

$smarty->display('index.tpl');
?>

    

Si $force_compile está habilitado, los archivos de cache siempre seran regenerados. Esto definitivamente desactiva el caching. $force_compile generalmente es usado para propositos de debug solamente, una forma mas eficiente de desactivar el caching es asignando $caching = false (ó 0.)

La función is_cached() puede ser usada para testar si un template tiene un cache valido o no. Si usted tiene un template con cache que requiera alguna cosa como un retorno de base de datos, usted puede usar esto para saltar este proceso.

Example 14.4. Usando is_cached()


<?php
require('Smarty.class.php');
$smarty = new Smarty;

$smarty->caching = true;

if(!$smarty->is_cached('index.tpl')) {
    // No cache available, do variable assignments here.
    $contents = get_database_contents();
    $smarty->assign($contents);
}

$smarty->display('index.tpl');
?>

    

Usted puede guardar partes de su pagina dinámica con la función de template {insert}. Vamos a decir que su pagina entera puede tener cache excepto para un banner que es mostrado abajo del lado derecho de su pagina. Usando la función insert para el banner, usted puede guardar ese elemento dinámico dentro de un contenido de cache. Vea la documentación en {insert} para detalles y ejemplos.

Usted puede limpiar todos los archivos de cache con la función clear_all_cache(), los archivos de cache individuales (o grupos) con la función clear_cache().

Example 14.5. Limpiando el cache


<?php
require('Smarty.class.php');
$smarty = new Smarty;

$smarty->caching = true;

// clear out all cache files
$smarty->clear_all_cache();

// clear only cache for index.tpl
$smarty->clear_cache('index.tpl');

$smarty->display('index.tpl');
?>

    

Comments
No comments for this page.

Advertisement

Sponsors [info]

Sponsors