Az előző post folytatásaként jöjjön a konkrét megvalósítás.
Először is kapcsoljuk be a cachelést a smartyban:
$smarty->caching = true;
Ezt persze megtehetjük a smarty.class.php fájlban is, ha minden oldalra ki akarjuk terjeszteni, akkor érdemes itt beállítani a $caching változó segítségével. Szükség van még egy könyvtárra, amelyre írási jog szükséges, ezt a $cache_dir változóval állíthatjuk. Fontos még beállítani a $cache_lifetime változót, ez adja meg a cache fájlok lejárásának az idejét.
Ha ezzel megvagyunk nincs más dolgunk, mint vizsgálni a php fájloknak lehetőleg a legelején, hogy van-e mentett változat, ezt a if(!$smarty->is_cached('index.tpl')) tehetjük meg. Ha nincs mentett változat, akkor futnak csak le az adatbázis-lekérdezések, egyéb php kód. Már csak a megjelenítés van hátra, $smarty->display('index.tpl');.
Ha jó nagyra állítjuk a $cache_lifetime változót, akkor szükség van arra, hogy módosításnál, mondjuk az admin felületen, a megfelelő cache fájlokat töröljük, ezt a $smarty->clear_cache('index.tpl'); utasítással tehetjük meg.
Még fontos lehet az a kérdés, hogy mi van akkor, ha egy tpl fájlt használunk, és sokféle tartalom kerülhet bele. Erre is van megoldás, mégpedig: if(!$smarty->is_cached('index.tpl', 'Kezdooldal')) és természetesen a többi utasítás is bővül a 'Kezdooldal' kapcsolóval, ami természetesen barmi lehet, akar egy ID is.
Jó példákat találhattok a phpfreaks smarty manualjában.