Saat menggunakan cache fragmen atau cache halaman, kita sering mengalami situasi di mana seluruh bagian output relatif statis kecuali pada satu atau beberapa tempat. Sebagai contoh, halaman bantuan mungkin menampilkan halaman statis informasi bantuan dengan nama pengguna yang saat ini masuk ditampilkan di atas.
Untuk memecahkan masalah ini, kita dapat memvariasikan konten cache berdasarkan pada nama pengguna, tapi ini membuang ruang cache yang berharga karena kebanyakan konten sama kecuali nama pengguna. Kita juga bisa membagi halaman ke dalam beberapa fragmen dan men-cache-nya secara individual, tapi ini mempersulit tampilan kita dan menjadikan kode kita sangat kompleks. Pendekatan yang lebih baik adalah penggunaan fitur konten dinamis yang disediakan oleh CController.
Konten dinamis berarti sebuah fragmen output yang tidak harus di-cache meskipun ia disertakan di dalam fragmen cache. Untuk membuat konten dinamis selamanya, ia harus dibuat setiap kali meskipun penyertaan konten sedang dilayani dari cache. Untuk alasan ini, kita memerlukan konten dinamis dibuat oleh beberapa metode atau fungsi.
Kita memanggil CController::renderDynamic() untuk menyisipkan konten dinamis di tempat yang diinginkan.
...konten HTML lain... if($this->beginCache($id)) { ...konten fragmen yang di-cache... $this->renderDynamic($callback); ...konten fragmen yang di-cache... $this->endCache(); } ...konten HTML lain...
Dalam contoh di atas, $callback
merujuk pada PHP callback yang benar. Ia bisa berupa string yang merujuk ke nama metode dalam kelas kontroler saat ini atau
fungsi global. Ia juga bisa berupa array yang merujuk ke metode kelas. setiap
parameter tambahan pada renderDynamic()
akan dioper ke callback. Callback harus mengembalikan konten dinamis daripada
menampilkannya.
Signup or Login in order to comment.