Paramétrer le cache
La première chose à faire est d'activer le cache. Celà est fait en
mettant $caching = true
(ou 1).
Activation du cache
caching = true;
$smarty->display('index.tpl');
?>
]]>
Avec le cache activé, la fonction display('index.tpl') va afficher
le template mais sauvegardera par la même occasion une copie du résultat
dans un fichier (de cache) du répertoire
$cache_dir. Au prochain appel de
display('index.tpl'), le fichier de cache sera préféré à la réutilisation
du template.
Note technique
Les fichiers situés dans $cache_dir sont nommés de la même façon que les templates.
Bien qu'ils aient une extension ".php", ils ne sont pas vraiment exécutable.
N'éditez surtout pas ces fichiers !
Tout fichier de cache a une durée de vie limitée déterminée par $cache_lifetime. La valeur par
défaut est 3600 secondes, i.e. 1 heure. Une fois que cette durée est
dépassée, le cache est regénéré. Il est possible de donner
une durée d'expiration propre à chaque fichier de cache en réglant
$caching = 2.
Se reporter à la documentation de $cache_lifetime pour plus de
détails.
Réglage individuel de cache_lifetime
caching = 2; // régler la durée de vie individuellement
// règle la durée de vie du cache a 15 minutes pour index.tpl
$smarty->cache_lifetime = 300;
$smarty->display('index.tpl');
// règle la durée de vie du cache à 1 heure pour home.tpl
$smarty->cache_lifetime = 3600;
$smarty->display('home.tpl');
// NOTE : le réglage suivant ne fonctionne pas quand $caching = 2. La durée de vie
// du fichier de cache de home.tpl a déja été réglée a 1 heure et ne respectera
// plus la valeur de $cache_lifetime. Le cache de home.tpl expirera toujours
// dans 1 heure.
$smarty->cache_lifetime = 30; // 30 secondes
$smarty->display('home.tpl');
?>
]]>
Si $compile_check est actif,
chaque fichier de template et de configuration qui a un rapport
avec le fichier de cache sera vérifié pour détecter une éventuelle
modification. Si l'un de ces fichiers a été modifié depuis que le fichier de cache a été
généré, le cache est immédiatement regénéré. Ce processus est couteux, donc,
pour des raisons de performances, mettez ce paramètre à false pour une application
en production.
Activation de $compile_check
caching = true;
$smarty->compile_check = true;
$smarty->display('index.tpl');
?>
]]>
Si $force_compile est actif,
les fichiers de cache sont toujours regénérés. Ceci revient finalement à
désactiver le cache. $force_compile est utilisé à des fins de débogage,
un moyen plus efficace de désactiver le cache est de régler
$caching = false (ou 0).
La fonction is_cached() permet
de tester si un template a ou non un fichier de cache valide.
Si vous disposez d'un template en cache qui requiert une requête
à une base de données, vous pouvez utiliser cette méthode plutôt
que $compile_check.
Exemple avec is_cached()
caching = true;
if(!$smarty->is_cached('index.tpl')) {
// pas de cache disponible, on assigne
$contents = get_database_contents();
$smarty->assign($contents);
}
$smarty->display('index.tpl');
?>
]]>
Vous pouvez rendre dynamiques seulement certaines parties d'une
page avec la fonction de template insert.
Imaginons que toute une page doit être mise en cache à part
une bannière en bas à droite. En utilisant une fonction insert pour la
bannière, vous pouvez garder cet élément dynamique dans le contenu qui
est en cache. Reportez-vous à la documentation
insert pour plus de détails
ainsi que des exemples.
Vous pouvez effacer tous les fichiers du cache avec la fonction clear_all_cache(), ou de façon
individuelle (ou par groupe) avec la fonction clear_cache().
Nettoyage du cache
caching = true;
// efface tous les fichiers du cache
$smarty->clear_all_cache();
// efface le fichier de cache du template 'index.tpl'
$smarty->clear_cache('index.tpl');
$smarty->display('index.tpl');
?>
]]>