Paramétrer le cache
La premiére chose a faire est d'activer le cache. Cela est fait en
mettant $caching = true
(ou 1).
activation du cache
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->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é a la réutilisation
du template.
Note technique
Les fichiers situés dans $cache_dir sont nommés de la même faton 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 a chaque fichier de cache en réglant
$caching = 2.
Se reporter a la documentation de $cache_lifetime pour plus de
détails.
réglage individuel de cache_lifetime
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->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 a 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 covteux, donc,
pour des raisons de performances, mettez ce paramétre a false pour une application
en production.
activation de $compile_check
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->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 a
désactiver le cache. $force_compile est utilisé a 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
a une base de données, vous pouvez utiliser cette méthode plut(t
que $compile_check.
utilisation de is_cached()
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->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 templates insert.
Imaginons que toute une page doit être mise en cache a part
une banniére en bas a 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 a la documentation
insert pour plus de détails
et des exemples.
Vous pouvez effacer tous les fichiers du cache avec la fonction clear_all_cache(), ou de faton
individuelle (ou par groupe) avec la fonction clear_cache().
nettoyage du cache
require('Smarty.class.php');
$smarty = new Smarty;
$smarty->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');