Karena template adalah dinamis, pening untuk berhati-hari terhadap apa
yang anda cache dan untuk berapa lama. Misalnya, jika anda menampilkan
halaman depan atas situs anda yang tidak merubah kontennya dengan sering,
mungkin baik untuk men-cache halaman ini untuk satu jam atau lebih. Sebaliknya,
jika anda menampilkan halaman yang berisi informasi baru dalam hitungan menit,
tidak masuk akal untuk men-cache halaman ini.
Menyiapkan Cache
Hal pertama yang dilakukan adalah menghidupkan cache dengan menyetel
$caching = 1 (atau 2).
Teladan 14-1. Menghidupkan cache
<?php require('Smarty.class.php'); $smarty = new Smarty;
$smarty->caching = 1;
$smarty->display('index.tpl'); ?>
|
|
Dengan menghidupkan cache, fungsi panggil ke
display('index.tpl') akan membuat template seperti
biasa, tapi juga menyimpan duplikat dari outputnya ke sebuah file
(duplikat cache) dalam
$cache_dir.
Panggilan berikutnya ke display('index.tpl'), duplikat cache
akan dipakai daripada membuat template kembali.
Catatan Teknis:
File dalam
$cache_dir
diberi nama mirip dengan nama template.
Meskipun berakhir dalam ekstensi .php, ini tidak
dimaksudkan dijalankan secara langsung. Jangan edit file ini!
Setiap halaman yang di-cache memiliki batasan usia yang ditentukan oleh
$cache_lifetime.
Nilai standarnya adalah 3600 detik atau satu jam. Setelah itu waktu berakhir,
cache dibuat ulang. Dimungkinkan untuk memberikan cache individual memiliki
waktu berakhirnya dengan menyetel
$caching=2.
Lihat $cache_lifetime
untuk lebih jelasnya.
Teladan 14-2. Menyetel $cache_lifetime per cache
<?php require('Smarty.class.php'); $smarty = new Smarty;
$smarty->caching = 2; // usia per cache
// set cache_lifetime untuk index.tpl ke 5 menit $smarty->cache_lifetime = 300; $smarty->display('index.tpl');
// set cache_lifetime untuk home.tpl ke 1 jam $smarty->cache_lifetime = 3600; $smarty->display('home.tpl');
// CATATAN: setelan $cache_lifetime berikut tidak akan bekerja saat $caching = 2. // Usia cache untuk home.tpl sudah disetel ke 1 jam, dan tidak akan memperhatikan // nilai lagi $cache_lifetime. // Cache home.tpl masih akan berakhir setelah 1 jam. $smarty->cache_lifetime = 30; // 30 seconds $smarty->display('home.tpl'); ?>
|
|
Jika
$compile_check dihidupkan,
setiap file template dan file config yang terkait dengan file cache diperiksa
modifikasinya. Jika setiap file sudah dimodifikasi sejak cache dibuat, cache
segera dibuat ulang. Ini adalah beban kecil untuk performansi optimal, set
$compile_check
ke FALSE.
Teladan 14-3. Menghidupkan $compile_check
<?php require('Smarty.class.php'); $smarty = new Smarty;
$smarty->caching = 1; $smarty->compile_check = true;
$smarty->display('index.tpl'); ?>
|
|
Jika
$force_compile dihidupkan,
file cache akan selalu diubat. Ini efektif mematikan cache.
$force_compile
biasanya hanya untuk keperluan
debugging,
cara yang lebih efisien mematikan cache adalah menyetel $caching
= 0.
Fungsi is_cached()
dapat digunakan untuk menguji jika template memiliki cache yang benar atau
tidak. Jika anda memiliki template yang di-cache yang memerlukan hal
seperti pengambilan database, anda bisa menggunakan ini untuk melewati
proses itu.
Teladan 14-4. Menggunakan is_cached()
<?php require('Smarty.class.php'); $smarty = new Smarty;
$smarty->caching = 1;
if(!$smarty->is_cached('index.tpl')) { // Cache tidak tersedia, lakukan penempatan variabel di sini. $contents = get_database_contents(); $smarty->assign($contents); }
$smarty->display('index.tpl'); ?>
|
|
Anda dapat memelihara bagian halaman dinamis dengan fungsi template {insert}.
Katakanlah seluruh halaman dapat di-cache kecuali untuk iklan yang
ditampilkan di bawah halaman. Dengan menggunakan fungsi
{insert}
untuk iklan, anda bisa memelihara elemen ini dinamis dalam konten yang
di-cache. Lihat dokumentasi pada
{insert}
untuk lebih jelas dan contohnya.
Anda bisa membersihkan semua file cache dengan fungsiclear_all_cache(),
atau file cache individual
dan grup dengan fungsi clear_cache().
Teladan 14-5. Membersihkan cache
<?php require('Smarty.class.php'); $smarty = new Smarty;
$smarty->caching = 1;
// bersihkan hanya cache untuk index.tpl $smarty->clear_cache('index.tpl');
// bersihkan semua file cache $smarty->clear_all_cache();
$smarty->display('index.tpl'); ?>
|
|