Get Smarty

Donate

Paypal

Smarty Icon

You may use the Smarty logo according to the trademark notice.

Smarty Template Engine Smarty Template Engine

For sponsorship, advertising, news or other inquiries, contact us at:

Sites Using Smarty

Advertisement

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.

Teladan 14-6. 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().

Teladan 14-7. 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().

Teladan 14-8. 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.

Comments
No comments for this page.

Advertisement