Mengontrol Plugins ynd Bisa Di-cache' Output Sejak plugin Smarty-2.6.0, plugins yang bisa di-cache dapat dideklarasikan saat meregistrasinya. Parameter ketiga pada register_block(), register_compiler_function() dan register_function() disebut $cacheable dan standarnya &true; yang juga merupakan tabiat plugins dalam Smarty versi sebelum 2.6.0 Ketika meregistrasi sebuah plugin dengan $cacheable=false, plugin dipanggil setiap kali halaman ditampilkan, meskipun halaman berasal dari cache. Fungsi plugin berlaku sedikit mirip fungsi {insert}. Sebaliknya dari {insert} atribut plugins standarnya tidak di-cache. Bisa dideklarasikan untuk di-cache dengan parameter keempat $cache_attrs. $cache_attrs adalah array nama-atribut yang harus di-cache, agar fungsi-plugin memperoleh nilai seperti pertama kali halaman dituliskan ke cache, setiap kali ia diambil dari cache. Menghindari output plugin di-cache caching = true; function remaining_seconds($params, &$smarty) { $remain = $params['endtime'] - time(); if($remain >= 0){ return $remain . ' second(s)'; }else{ return 'done'; } } $smarty->register_function('remaining', 'remaining_seconds', false, array('endtime')); if (!$smarty->is_cached('index.tpl')) { // ambil $obj dari db dan tempatkan... $smarty->assign_by_ref('obj', $obj); } $smarty->display('index.tpl'); ?> ]]> di mana index.tpl adalah: endtime} ]]> Jumlah detik sampai endtime $obj dicapai, perubahan pada setiap tampilan halaman, meskipun bila halaman di-cache. Karena atribut endtime di-cache. obyek harus ditarik dari database ketika halaman dituliskan ke cache tapi tidak pada permintaan halaman berikutnya. Menghindari seluruh bagian template di-cache caching = 1; function smarty_block_dynamic($param, $content, &$smarty) { return $content; } $smarty->register_block('dynamic', 'smarty_block_dynamic', false); $smarty->display('index.tpl'); ?> ]]> where index.tpl is: Ketika mengambil ulang halaman, anda akan mencatat bahwa kedua tanggal berbeda. Satu dynamis dan satu statis. Anda dapat melakukan apapun antara {dynamic}...{/dynamic} dan pastikan ia tidak akan di-cache seperti bagian halaman lainnya.