mirror of
https://github.com/yiisoft/yii.git
synced 2026-03-04 23:34:05 +01:00
118 lines
4.8 KiB
Plaintext
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> |