Pasti pernah denger mahkluk namanya Cache. . . basically Cache berguna buat mengefisiensikan pengaksesan sesuatu, Cache berkerja dengan menyimpan informasi yang paling sering diakses deket-deket sama pengakses
analoginya sama dengan etalase di toko, barang2 yang paling sering dibeli dan laku disimpan di etalase sehingga jika ada yang mau membelinya tinggal ambil, barang2 yang jarang dibeli jika customer minta.. ya mo ga mau harus ambil dulu ke gudang… well at least proses
untuk barang yang paling sering dibeli jadi lebih cepet kan ?
jauh lebih efisien daripada semua barang disimpan di gudang..
Itulah kenapa Memori RAM yang lambat tapi gede bisa lebih efisien
dengan metoda cache yang dilakukan oleh Memori Register yang kecil tapi cepet..
Tapi kita tidak akan membicarakan cache yang itu….
Coba bayangkan kasus sebuah site sejenis friendster, coba ingat ada apa di halaman depannya ? mm… mungkin akan ada [TOTAL MEMBERS], [MOST RECENT MEMBERS],[TOP 10 MEMBERS]… dan query database ntuk mengakses informasi tadi bisa ditulis dengan. . .
:: Jumlah Member ::
SELECT COUNT(id) FROM users
:: Most Recent ::
SELECT username FROM users ORDER BY users.redgate DESC
:: TOP 10 USER RATING ::
SELECT username FROM users ORDER BY rating LIMIT 10
simple khan… coba di-perkirakan berapa kali data diatas akan berubah ?
mm untuk JUMLAH MEMBER terjadi agak jarang, untuk most RECENT bisa saja berubah karena user bisa login sewaktu-waktu, untuk top 10 RATING bisa sangat jarang….
Ide dari caching di dalam kode web kita adalah meminimalisir akses QUERY ke database, kenapa ?
ngapain capek2 query database kalo isinya sama aja ?
WEB bisa diakses PARAREL kan ?, so bayangkan halaman depan itu dikunjungi oleh 800 user, coba perkirakan berapa kali kita QUERY database dan jawabanya sama itu-itu aja…
misalnya hari itu ga ada satupun member yang register.. maka hasil dari query
SELECT count(id) FROM users
mo dipanggil berapakalipun hari itu akan menghasilkan nilai yang selalu sama…
Apalagi bayangkan kalau databasenya ga semesin ma web-servernya ?
nangkep dimana celah efisiensinya ?
daripada kita akses query-query itu.. kenapa ga kita cache ?
dan cache itu hanya kita UPDATE pada saat cache itu memang harus diubah (expired)… ?
metoda yang umum yang sering dipakai ada 2, dengan kelebihan dan kekurangan masing-masing :
TABLE FOR STORING
Efisiensi sejenis cache yang ini bekerja dengan menyimpan variabel-variabel yang sering dipakai di media yang sering digunakan… mm.. kalo di PhpBB teknik ini mungkin karena ada tabel khusus untuk menyimpan informasi global soal web kita…misalnya daripada memakai
SELECT count(id) FROM users
mendingan simpan jumlah total user di tabel GLOBAL dengan field (VARNAME,VALUE) yang isinya
VARNAME | VALUE
———————————
USERTOTAL | 100
CONFIG | ….
so kalo mo tau berapa jumlah user di web kamu ? tinggal
SELECT value FROM global WHERE VARNAME=”usertotal”
cepetan mana sama
SELECT COUNT(*) ?
yah.. mungkin contoh diatas ga terlalu signifikan cepetnya… tapi
lumayan deh… anyway….
MySQL yang baru juga punya CACHE internal yang cuma bekerja ke query yang bener2 identik (kalo kamu nyalain it juga).. so teknik yang ini uda aga ga ngefek kalo sekarang2…
nah itu teknik pertama… selanjutnya
(kalo ada waktu… :P)
Posted in Programming | Tags: cache, php, technology, trick, web

