Files
yii/docs/guide/id/caching.data.txt
2010-11-14 14:17:44 +00:00

118 lines
4.8 KiB
Plaintext

Penembolokan Data(Data Caching)
===========================
Tembolok Data(Data caching) sebenarnya berhubungan dengan penyimpanan beberapa variabel PHP dalam tembolok dan mengambilnya
kemudian dari tembolok. Untuk keperluan ini, basis komponen tembolok [CCache]
menyediakan dua metode yang dipakai dari waktu ke waktu: [set()|CCache::set]
dan [get()|CCache::get].
Untuk menyimpan variabel `$value` dalam tembolok, kita memilih ID unik dan memanggil
[set()|CCache::set] untuk menyimpannya:
~~~
[php]
Yii::app()->cache->set($id, $value);
~~~
Data yang ditembolok akan tetap berada dalam tembolok selamanya kecuali ia dihapus
karena beberapa kebijakan penembolokan (contoh, ruang tembolok penuh dan data terlama
dihapus). Untuk mengubah perilaku umum kita juga bisa menyediakan
parameter masa hidup(life-time) saat memanggil [set()|CCache::set] dengan demikian data
akan dihapus dari tembolok setelah periode waktu tertentu:
~~~
[php]
// perlihara nilai dalam tembolok 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()|CCache::get] dengan ID untuk mengambilnya
dari tembolok. Jika nilai yang dikembalikan false, ini berarti nilai
tidak tersedia dalam tembolok dan kita harus membuatnya kembali.
~~~
[php]
$value=Yii::app()->tembolok->get($id);
if($value===false)
{
// buat ulang $value karena tidak ditemukan dalam tembolok
// dan simpan dalam tembolok untuk dipakai nanti:
// Yii::app()->cache->set($id,$value);
}
~~~
Ketika memilih ID untuk variabel yang ditembolok, pastikan ID unik di antara
semua variabel lain yang mungkin ditembolok dalam aplikasi. ID tidak perlu
unik di antara berbagai aplikasi karena komponen tembolok cukup pintar
untuk membedakan ID pada aplikasi yang
berbeda.
Beberapa penyimpanan tembolok, seperti MemCache, APC, mendukung pengambilan
beberapa nilai yang ditembolok dalam mode tumpak(batch), ini dapat mengurangi beban terkait
pada pengambilan data tembolok. Mulai dari versi 1.0.8, metode baru bernama
[mget()|CCache::mget] disediakan guna mengeksploitasi fitur ini. Dalam hal penyimpanan
tembolok lapisan bawah tidak mendukung fitur ini, [mget()|CCache::mget] masih tetap akan
mensimulasikannya.
Untuk menghapus nilai yang ditembolok dari tembolok, panggil [delete()|CCache::delete]; dan
untuk menghapus semuanya dari tembolok, panggil [flush()|CCache::flush]. Harap
berhati-hati saat memanggil [flush()|CCache::flush] karena ia juga menghapus data
yang ditembolok yang berasal dari aplikasi lain.
> Tip: Karena [CCache] mengimplementasikan `ArrayAccess`, komponen tembolok bisa
> dipakai layaknya sebuah. Berikut adalah beberapa contoh:
> ~~~
> [php]
> $cache=Yii::app()->cache;
> $cache['var1']=$value1; // sama dengan: $cache->set('var1',$value1);
> $value2=$cache['var2']; // sama dengan: $value2=$cache->get('var2');
> ~~~
Ketergantungan Tembolok
--------------------
Selain pengaturan masa hidup, data yang ditembolok juga bisa disegarkan berdasarkan
pada beberapa perubahan ketergantungan. Sebagai contoh, jika kita men-tembolok konten
beberapa file dan file berubah, kita harus menyegarkan duplikat yang ditembolok
dan membaca konten terbaru dari file alih-alih tembolok.
Kami menyajikan ketergantungan sebagai turunan dari [CCacheDependency] atau anak
kelasnya. Kami mengoper turunan ketergantungan bersamaan dengan data yang ditembolok
saat pemanggilan [set()|CCache::set].
~~~
[php]
// 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 tembolok dengan memanggil [get()|CCache::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 tembolok yang tersedia:
- [CFileCacheDependency]: ketergantungan diubah jika waktu modifikasi
file terakhir diubah.
- [CDirectoryCacheDependency]: ketergantungan diubah jika file di
bawah direktori dan subdirektorinya berubah.
- [CDbCacheDependency]: ketergantungan diubah jika hasil kueri
pernyataan SQL yang ditetapkan berubah.
- [CGlobalStateCacheDependency]: ketergantungan diubah jika nilai
kondisi global yang ditetapkan berubah. Kondisi global adalah variabel
yang persisten pada beberapa permintaan dan beberapa sesi dalam aplikasi.
Ketergantungan ini didefinisikan melalui [CApplication::setGlobalState()].
- [CChainedCacheDependency]: ketergantungan diubah jika salah satu
rantai berubah.
- [CExpressionDependency]: ketergantungan berubah jika hasil yang
ditetapkan ekspresi PHP
diubah. Kelas ini sudah tersedia sejak versi 1.0.4.
<div class="revision">$Id: caching.data.txt 1855 2010-03-04 22:42:32Z qiang.xue $</div>