Paramétrer le cache La première chose à faire est d'activer le cache. Cela 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 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 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'); ?> ]]>