0 follower

Caching

Caching sebuah cara murah dan efektif guna meningkatkan performansi aplikasi Web. Dengan menyimpan data statis secara relatif dalam cache dan melayaninya dari cache bila diminta, kita menghemat waktu yang diperlukan untuk membuat data.

Pemakaian cache dalam Yii mencakup mengkonfigurasi dan mengakses komponen aplikasi cache. Konfigurasi aplikasi berikut menetapkan komponen cache yang menggunakan memcache dengan dua server cache.

array(
    ......
    'components'=>array(
        ......
        'cache'=>array(
            'class'=>'system.caching.CMemCache',
            'servers'=>array(
                array('host'=>'server1', 'port'=>11211, 'weight'=>60),
                array('host'=>'server2', 'port'=>11211, 'weight'=>40),
            ),
        ),
    ),
);

Ketika aplikasi berjalan, komponen cache daoat diakses via Yii::app()->cache.

Yii menyediakan berbagai komponen cache yang dapat menyimpan data cache dalam medium berbeda. Sebagai contoh, komponen CMemCache melapisi ekstensi PHP memcache dan pemakaian memori sebagai medium penyimpanan cache; komponen CApcCache melapisi ekstensi PHP APC; dan komponen CDbCache menyimpan data cache di dalam database. Berikut ini adalah ringkasan komponen-komponen cache yang tersedia:

  • CMemCache: menggunakan ekstensi memcache PHP.

  • CApcCache: menggunakan ekstensi APC PHP.

  • CXCache: menggunakan ekstensi XCache PHP. Catatan, ini sudah tersedia sejak versi 1.0.1.

  • CEAcceleratorCache: menggunakan PHP EAccelerator extension.

  • CDbCache: menggunakan tabel database untuk menyimpan data cache. Secara standar, ia akan membuat dan menggunakan database SQLite3 di bawah direktori runtime. Anda dapat menetapkan secara eksplisit database yang dipilih dengan menyetel properti connectionID.

  • CZendDataCache: menggunakan Zend Data Cache sebagi lapisan medium caching. Catatan, ini sudah tersedia sejak versi 1.0.4.

  • CDummyCache: menyajikan cache dummy yang tidak melakukan cache sama sekali. Maksud komponen ini adalah untuk menyederhanakan kode yang harus memeriksa ketersediaan cache. Sebagai contoh, selama pengembangan atau jika server tidak memiliki dukungan cache sebenarnya, kita dapat menggunakan komponen cache ini. Seandainya dukungan cache sebenarnya dihidupkan, kita dapat beralih untuk menggunakan komponen cache terkait. Dalam kedua kasus tersebut, kita dapat menggunakan kode yang sama Yii::app()->cache->get($key) untuk mencoba mengambil bagian data tanpa mencemaskan apakah Yii::app()->cache mungkin berisi null. Komponen ini sudah tersedia sejak versi 1.0.5.

Tip: Karena semua komponen cache ini diperluas dari basis kelas yang sama CCache, Anda bisa beralih untuk menggunakan jenis cache tanpa mengubah kode yang menggunakan cache.

Caching dapat dipakai pada tingkat yang bebeda. Pada tingkat terendah, kita gunakan cache untuk menyimpan satu data, misalnya sebuah variabel, dan kita menyebut ini data caching. Pada tingkat berikutnya, kita menyimpan sebuah fragmen halaman dalam cache yang dibuat oleh bagian naskah tampilan. Dan pada tingkat tertinggi, kita menyimpan seluruh halaman dalam cache dan melayaninya dari cache bila diperlukan.

Dalam beberapa subseksi berikut, kita mengelaborasi bagaimana untuk menggunakan cache pada tingkatan ini.

Catatan: Secara definisi, cache adalah medium penyimpanan volatil. Ia tidak memastikan keberadaan data yang di-cache meskipun belum berakhir. Oleh karena itu, jangan gunakan cache sebagai penyimpanan persisten (contoh, jangan gunakan cache untuk menyimpan data sesi).