Impostare il Caching
La prima cosa da fare è abilitare il caching. Per farlo bisogna
impostare $caching = true (o 1.)
abilitare il caching
caching = true;
$smarty->display('index.tpl');
?>
]]>
Col caching abilitato, la chiamata alla funzione display('index.tpl')
causa la normale generazione del template, ma oltre a questo salva
una copia dell'output in un file (la copia in cache) nella $cache_dir. Alla chiamata successiva
di display('index.tpl'), verrà usata la copia in cache invece di
generare di nuovo il template.
Nota tecnica
I file nella $cache_dir vengono chiamati con nomi simili al nome del
template. Sebbene abbiano l'estensione ".php", in realtà non sono
script php eseguibili. Non editateli!
Ogni pagina in cache ha un tempo di vita limitato, determinato da
$cache_lifetime. Il
valore di default è 3600 secondi, cioè 1 ora. Dopo questo tempo, la
cache viene rigenerata. E' possibile dare a file singoli il proprio
tempo di scadenza impostando $caching = 2. Consultate la documentazione
di $cache_lifetime per i dettagli.
impostare cache_lifetime per singolo file di cache
caching = 2; // la durata è per singolo file
// impostiamo il cache_lifetime per index.tpl a 5 minuti
$smarty->cache_lifetime = 300;
$smarty->display('index.tpl');
// impostiamo il cache_lifetime per home.tpl a 1 ora
$smarty->cache_lifetime = 3600;
$smarty->display('home.tpl');
// NOTA: l'impostazione seguente di $cache_lifetime non funzionerà
// con $caching = 2. La scadenza per home.tpl è stata già impostata
// a 1 ora, e non rispetterà più il valore di $cache_lifetime.
// La cache di home.tpl scadrà sempre dopo 1 ora.
$smarty->cache_lifetime = 30; // 30 seconds
$smarty->display('home.tpl');
?>
]]>
Se $compile_check è abilitato,
tutti i file di template e di configurazione che sono coinvolti nel file
della cache vengono verificati per vedere se sono stati modificati. Se qualcuno
dei file ha subito una modifica dopo che la cache è stata generata, il file
della cache viene rigenerato. Questo provoca un piccolo sovraccarico, quindi,
per avere prestazioni ottimali, lasciate $compile_check a false.
abilitare $compile_check
caching = true;
$smarty->compile_check = true;
$smarty->display('index.tpl');
?>
]]>
Se $force_compile è abilitato,
i file della cache verranno sempre rigenerati. Di fatto questo disabilita
il caching. $force_compile normalmente serve solo per scopi di debug, un
modo più efficiente di disabilitare il caching è di impostare $caching = false (o 0.)
La funzione is_cached() può essere
usata per verificare se un template ha una cache valida oppure no. Se avete
un template in cache che necessita di qualcosa come una lettura da un
database, potete usare questa funzione per saltare quella parte.
uso di is_cached()
caching = true;
if(!$smarty->is_cached('index.tpl')) {
// Non c'è cache disponibile, assegnamo le variabili qui.
$contents = get_database_contents();
$smarty->assign($contents);
}
$smarty->display('index.tpl');
?>
]]>
Potete mantenere parti di una pagina dinamiche con la funzione del template
insert. Diciamo che l'intera
pagina può essere messa in cache eccetto un banner che viene visualizzato
in fondo a destra nella page. Usando la funzione insert per il banner, potete
tenere questo elemento dinamico all'interno del contenuto in cache. Consultate
la documentazione su insert per
dettagli ed esempi.
Potete eliminare tutti i file della cache con la funzione clear_all_cache(), o singoli
file della cache (o gruppi di file) con la funzione clear_cache().
eliminare la cache
caching = true;
// eliminiamo tutti i file della cache
$smarty->clear_all_cache();
// eliminiamo solo la cache di index.tpl
$smarty->clear_cache('index.tpl');
$smarty->display('index.tpl');
?>
]]>