0 follower

Cache Halaman

Cache halaman merujuk pada cache konten seluruh halaman. Cache halaman bisa terjadi di berbagai tempat. Sebagai contoh, dengan memilih header halaman yang sesuai, browser klien mungkin men-cache halaman yang sedang dilihat untuk waktu tertentu. Aplikasi Web itu sendiri juga dapat menyimpan konten halaman dalam cache. Dalam subseksi ini, fokus kita pada pendekatan ini.

Cache halaman bisa dipertimbangkan sebagai kasus khusus cache fragmen. Karena konten halaman sering dibuat dengan menerapkan tata letak pada sebuah tampilan, ia tidak akan bekerja jika kita hanya memanggil beginCache() dan endCache() dalam tata letak. Alasannya adalah karena tata letak diterapkan di dalam metode CController::render() SETELAH tampilan konten dievaluasi.

Untuk men-cache seluruh halaman, kita harus melewati jalannya aksi pembuatan konten halaman. Kita bisa menggunakan COutputCache sebagai aksi filter untuk melaksanakan tugas ini. Kode berikut memperlihatkan bagaimana kita mengkonfigurasi filter cache:

public function filters()
{
    return array(
        array(
            'COutputCache',
            'duration'=>100,
            'varyByParam'=>array('id'),
        ),
    );
}

Konfigurasi filter di atas akan menjadikan filter diterapkan ke semua aksi dalam kontroler. Kita dapat membatasinya ke satu atau beberapa aksi hanya dengan menggunakan operator plus. Lebih jelasnya bisa ditemukan dalam filter.

Tip: Kita dapat menggunakan COutputCache sebagai filter karena ia diperluas dari CFilterWidget, yang berarti ia adalah widget dan juga filter. Sebenarnya, cara widget bekerja mirip dengan filter: widget (filter) dimulai sebelum konten yang disertakan (aksi) dievaluasi, dan widget (filter) berakhir setelah konten yang disertakan (aksi) dievaluasi.