Multipel Caches Per Halaman Anda dapat memiliki multipel file cache untuk satu panggilan ke display() atau fetch(). Katakanlah sebuah panggilan ke display('index.tpl') memiliki beberapa konten output berbeda tergantung dari beberapa kondisi, dan anda ingin memisahkan cache masing-masing. Anda bisa melakukan ini dengan mengirimkan $cache_id sebagai parameter kedua ke fungsi panggil. Mengirimkan $cache_id untuk display() caching = 1; $my_cache_id = $_GET['article_id']; $smarty->display('index.tpl', $my_cache_id); ?> ]]> Di atas, kita mengirimkan variabel $my_cache_id ke display() sebagai $cache_id. Untuk setiap nilai unik dari $my_cache_id, cache terpisah akan dibuat untuk index.tpl. Dalam contoh ini, article_id dikirimpan dalam URL dan digunakan sebagai $cache_id. Catatan Teknis Harap berhati-hati saat mengirimkan nilai dari klien (web browser) ke dalam Smarty atau setiap aplikasi PHP. Meskipun contoh di atas menggunakan article_id dari URL terlihat mudah, ia dapat menimbulkan konsekuensi yang buruk. $cache_id dipakai untuk membuat direktori pada sistem file, maka jika pengguna memutuskan untuk mengirimkan nilai yang sangat besar untuk article_id, atau menulis naskah yang mengirimkan article_id acak dengan kecepatan tinggi, ini mungkin dapat menimbulkan masalah di tingkat server. Pastikan mengamankan setiap data yang dikirimkan sebelum menggunakannya. Dalam contoh ini, mungkin anda mengetahui article_id memiliki panjang sepuluh karakter dan hanya terdiri dari alfa-numerik, dan harus article_id yang benar dalam database. Periksa hal ini! Pastikan untuk mengirimkan $cache_id yang sama sebagai parameter kedua ke is_cached() dan clear_cache(). Mengirimkan cache_id ke is_cached() caching = 1; $my_cache_id = $_GET['article_id']; if(!$smarty->is_cached('index.tpl',$my_cache_id)) { // Cache tidak tersedia, lakukan penempatan variabel di sini. $contents = get_database_contents(); $smarty->assign($contents); } $smarty->display('index.tpl',$my_cache_id); ?> ]]> Anda bisa membersihkan semua cache untul $cache_id tertentu dengan mengirimkan &null; sebagai parameter kedua ke clear_cache(). Membersihkan semua cache untuk $cache_id tertentu caching = 1; // bersihkan semua cache dengan "sports" sebagai $cache_id $smarty->clear_cache(null,'sports'); $smarty->display('index.tpl','sports'); ?> ]]> Dengan cara ini, anda bisa mengelompokan cache anda bersama dengan memberikannya $cache_id yang sama.