Home > programming > Cache your data

Cache your data

January 17th, 2008

Beberapa hari ini, gue diharuskan membuat aplikasi yang support diakses banyak orang dalam saat yang bersamaan. Dengan bertambahnya user akses berarti bertambah juga performance server yang diperlukan. Dalam riset beberapa hari ini, gue menemukan beberapa alternatif yang lumayan untuk mengurangi beban server. Gunakaan cache.

Apa itu cache?

Cache adalah proses membuat data sementara hasil render suata page ke dalam file atau database. Jika ada user lain yang meminta halaman yang sama ke server anda, anda tidak perlu merender lagi halaman tersebut, cukup baca hasil render yang sebelumnya.

Beberapa cara cache

1. memchached
memcached membantu anda untuk menyimpan hasil result dari query database ke dalam suatu server. Sebelum query anda dijalankan, anda akan mengecheck dulu di servernya memcached apakah query ini sebelumnya sudah dilakukan atau belom. Memcached menggunakan sistem hash dengan multiple server, sehingga anda bisa mengurangi sistem database anda menjadi sesedikit mungkin, sehingga bisa mengurangi cost untuk multi server databases.
Pro:
- Dipakai oleh situs2 besar seperti youtube, gamefaqs, dll, anda bisa melihat list lengkapnya di situs aslinya.
- Sangat membantu untuk mengurangi beban database. Menurut manualnya bisa mengurangi 8 koneksi database menjadi 1.
- 1 result hanya tersimpan di satu server, bukan di semua server. Pembagian server dibagi oleh sistem hashing. Jadi kalo anda punya 3 komputer dengan memory 2 giga, anda sama dengan mempunyai cache server dengan memory 6 giga.
- Berfungsi untuk banyak bahasa dan banyak sistem database.
Cons:
- Sangat memakan memory.
- Anda harus merubah semua logic code anda dari yang hanya baca dari database untuk check dulu ke cache baru baca ke database. Setelah baca dari database, anda akan memasukan result tersebut ke cache.

2. Code Igniter’s cache
Saya menggunakan codeigniter sebagai framework php saya. Keuntungan dari menggunakan framework ini adalah CI menyediakan fasilitas cache internal, tanpa load library tambahan. Anda hanya cukup memanggil satu baris ini di manapun code anda berada :

$this->output->cache(n);

dimana n adalah jumlah menit halaman itu ingin anda cache.
Pro:
- Sedikit sekali perubahan yang anda perlukan untuk menjalankan cache.
- Menggunakan sistem hash juga, tentu saja untuk paramater pemanggilan page yang berbeda, CI akan membuat file cache terpisah. /file/a/ tidak sama dengan /file/b/
- Tidak seperti memcache yang memcache result dari database yang masih harus di proses code PHP. CI mengload langsung code HTML yang sudah di render, hasilnya jauh lebih cepat.
Cons:
- Setiap web server mempunya cachenya masing2. Jadi masih akan membebani database walaupun halaman yang sama dipanggil, kalau user menggunakan server web yang berbeda.
- Membebani web server untuk menyimpan file cache.

Masih banyak cara lagi untuk melakukan cache. Kedua cara diatas bisa digabungkan untuk hasil yang lebih maximal lagi. Tetapi sejauh yang saya coba, cache CI sendirian cukup menurunkan beban server banyak. Sehingga jumlah 3 server bisa dikurangi menjadi 1 server saja.

Share

programming , ,

  1. tash_tella
    January 17th, 2008 at 21:34 | #1

    weeewww…
    cache ache che che chee,,
    pusingk!!wakakakk…
    udaa maen game ajaa yuu om…
    huehue

  2. rickyok
    January 18th, 2008 at 14:32 | #2

    Dasar tella ^^ maennn teruss. Kerja2.. Udah kudu cari duit nich ehehe.

  3. XtiaN
    January 18th, 2008 at 15:41 | #3

    pakai CI ribet nih tar klo web kita itu web 2.0, dimana tiap web memiliki profil / tampilan yang berbeda-beda sesuai user yang login saat itu.

    Misal saking ramenya itu web dan user kita 1 juta orang, ga kebayang jumlah cache yang dicreate dan disave \o.O/

  4. rickyok
    January 18th, 2008 at 18:16 | #4

    Kalo gitu engga guna dong pake cache, website yang di cache itu biasanya yang dalam beberapa waktu (misal 5 menit) engga perlu berubah isinya. Kalo SNS paling cuma bisa pake cache di database level.

    BTW, gue juga lagi develop kayak SNS gitu, gue pake cache buat simpen panggilan ajax. Misalnya ajax/panggiltahun/1997, khan engga perlu ganti terus itu data.

  5. Marvyn
    January 19th, 2008 at 02:08 | #5

    wahh keren2 bro hehe.. btw apa kabar nih :D

  6. rickyok
    January 19th, 2008 at 09:26 | #6

    Baikkk ^^, loe sendiri gimana kabarny a vyn? lama tidak kedengeran. Masih di australia?

  1. No trackbacks yet.

Switch to our mobile site