0 follower

Data Caching

Data caching sebenarnya tentang penyimpanan beberapa variabel PHP dalam cache dan mengambilnya kemudian dari cache. Untuk keperluan ini, basis komponen cache CCache menyediakan dua metode yang dipakai dari waktu ke waktuprovides two methods that are used in most of the time: set() dan get().

Untuk menyimpan variabel $value dalam cache, kita memilih ID unik dan memanggil set() untuk menyimpannya:

Yii::app()->cache->set($id, $value);

Data yang di-cache akan tetap berada dalam cache selamanya kecuali ia dihapus karena beberapa kebijakan caching (contoh, ruang cache penuh dan data terlama dihapus). Untuk mengubah perilaku ubum kita juga bisa menyediakan parameter masa hidup saat memanggil set() dengan demikian data akan dihapus dari cache setelah periode waktu tertentu:

// perlihara nilai dalam cache paling lama 30 detik.
Yii::app()->cache->set($id, $value, 30);

Selanjutnya, saat kita perlu mengakses variabel ini (baik dalam permintaan Web yang sama atau berbeda), kita memanggil get() dengan ID untuk mengambilnya dari cache. Jika nilai yang dikembalikan false, ini berarti nilai tidak tersedia dalam cache dan kita harus membuatnya kembali.

$value=Yii::app()->cache->get($id);
if($value===false)
{
    // buat ulang $value karena tidak ditemukan dalam cache
    // dan simpan dalam cache untuk dipakai nanti:
    // Yii::app()->cache->set($id,$value);
}

Ketika memilih ID untuk variabel yang di-cache, pastikan ID unik diantara semua variabel lain yang mungkin di-cache dalam aplikasi. ID tidak perlu unik diantara berbagai aplikasi karena komponen cache cukup pintar untuk membedakan ID pada aplikasi yang berbeda.

Untuk menghapus nilai yang di-cache dari cache, panggil delete(); dan untuk menghapus semuanya dari cache, panggil flush(). Harap berhati-hati saat memanggil flush() karena ia juga menghapus data yang di-cache yang berasal dari aplikasi lain.

Tip: Karena CCache mengimplementasikan ArrayAccess, komponen cache bisa dipakai layaknya sebuah. Berikut adalah beberapa contoh:

$cache=Yii::app()->cache;
$cache['var1']=$value1;  // sama dengan: $cache->set('var1',$value1);
$value2=$cache['var2'];  // sama dengan: $value2=$cache->get('var2');

1. Ketergantungan Cache

Selain setelan masa hidup, data yang di-cache juga bisa disegarkan berdasarkan pada beberapa perubahan ketergantungan. Sebagai contoh, jika kita men-cache konten beberapa file dan file berubah, kita harus menyegarkan duplikat yang di-cache dan membaca konten terbaru dari file daripada cache.

Kami menyajikan ketergantungan sebagai turunan dari CCacheDependency atau anak kelasnya. Kami mengoper turunan ketergantungan bersamaan dengan data yang di -cache saat pemanggilan set().

// nilai akan berakhir dalam 30 detik
// ini juga akan disegarkan sebelumnya jika file dependen diubah
Yii::app()->cache->set($id, $value, 30, new CFileCacheDependency('FileName'));

Sekarang, jika kita mengambil $value dari cache dengan memanggil get(), ketergantungan akan dievaluasi dan jika ia berubah, kita akan mendapat nilai false yang menunjukan data perlu dibuat ulang.

Di bawah ini adalah ringkasan ketergantungan cache yang tersedia: