smarty template engine
Thursday, November 20, 2008  
download | documentation | faq | forum | mailing lists | changelog | contribs 


search for in the  


Bab 14. Caching

Caching dipakai untuk mempercepat pemanggilan display() atau fetch() dengan menyimpan output nya ke sebuah file. Jika versi cached dari yang dipanggil tersedia, itu akan ditampilkan daripada membuat ulang output. Caching dapat mempercepat sesuatu dengan dahsyat terutama template dengan waktu perhitungan lebih lama. Karena output display() atau fetch() di- cache, satu file cache bisa terdiri dari beberapa file template, file konfigurasi, dll.

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');
?>



 

credits 

Smarty Copyright © 2002-2008
New Digital Group, Inc.

All rights reserved.