Caching

Caching menyimpan salinan data atau hasil komputasi agar dapat digunakan kembali tanpa selalu mengambil atau menghitungnya dari awal. Cache dapat berada di memori aplikasi, disk, browser, proxy, CDN, atau layanan cache terpisah.

Cache dapat mengurangi latency karena letaknya lebih dekat dengan pemanggil, tetapi kedekatan geografis bukan syarat. Menghindari query database, transfer data, atau komputasi berulang juga dapat mengurangi waktu respons dan beban sumber asli.

Redis dan Memcached dapat dipakai sebagai cache bersama; penggunaannya tetap membutuhkan kebijakan key, masa berlaku, dan eviction.

Client Side Caching membahas penyimpanan di perangkat pengguna melalui HTTP cache dan API browser, berbeda dari layanan cache bersama.

Cara kerja

Contoh hipotetis: aplikasi menyimpan hasil pembacaan katalog produk agar request berikutnya tidak selalu menjalankan query yang sama. Setelah harga berubah, cache perlu diperbarui, dibatalkan, atau dibiarkan kedaluwarsa sesuai toleransi data lama.

Freshness dan invalidation

Cache membutuhkan kebijakan kapan data boleh digunakan kembali. TTL membatasi masa berlaku menurut aturan sistem; invalidation menandai atau menghapus entri ketika tidak lagi layak digunakan. Eviction mengeluarkan entri, misalnya karena kapasitas terbatas, bukan selalu karena data sudah berubah.

Dalam HTTP, data stale dapat divalidasi ulang sebelum dipakai. Cache-Control menjelaskan freshness, validator, serta private dan shared cache. Header HTTP tersebut tidak otomatis mengatur seluruh cache aplikasi.

Manfaat dan batas

Caching dapat meningkatkan Web Performance dan mengurangi beban sumber, tetapi tidak menjamin semua request lebih cepat. Cache miss, lookup jaringan, serialisasi, dan pemeliharaan cache menambah biaya. Ukur latency, hit rate, dan beban sumber pada workload yang sebenarnya.

Cache key dan batas akses harus membedakan data yang memang berbeda, termasuk konteks pengguna bila relevan. Jangan menyajikan respons pribadi dari shared cache kepada pengguna lain. Authentication does not replace authorization on each request tetap berlaku ketika data berasal dari cache.

Cache bukan pengganti penyimpanan utama atau backup. Sistem perlu menentukan toleransi data lama serta perilaku ketika cache kosong atau tidak tersedia.

Sumber