Recraftory

Pengenalan Caching

Memahami konsep caching untuk meningkatkan performa aplikasi

Apa itu Caching

  • Menyimpan salinan data di lokasi yang lebih cepat diakses
  • Mengurangi waktu response dengan menghindari komputasi atau I/O berulang
  • Bisa di memory, disk, atau server terpisah seperti Redis

Mengapa Caching Penting

  • Database query bisa lambat untuk data yang sering diakses
  • Komputasi berat tidak perlu diulang untuk input yang sama
  • Mengurangi beban server dan database
  • Meningkatkan user experience dengan response lebih cepat

Dimana Cache Bisa Ditempatkan

Client-Side Cache

  • Browser menyimpan asset seperti gambar, CSS, dan JavaScript
  • LocalStorage atau IndexedDB untuk data aplikasi
  • HTTP cache headers mengontrol cache di browser

CDN Cache

  • Server edge network menyimpan konten statis
  • Mengurangi latency untuk user di lokasi geografis berbeda
  • Cocok untuk gambar, video, dan file statis lainnya

Application Cache

  • Cache di memory aplikasi server
  • Contoh: menyimpan hasil query database di variable
  • Hilang saat server restart

Distributed Cache

  • Server cache terpisah seperti Redis atau Memcached
  • Bisa diakses oleh banyak instance aplikasi
  • Tetap ada meski salah satu server restart

Cache Hit dan Cache Miss

Cache Hit

  • Data yang diminta ada di cache
  • Response dikembalikan tanpa mengakses database
  • Menghemat waktu dan resource

Cache Miss

  • Data yang diminta tidak ada di cache
  • Aplikasi harus mengambil data dari sumber asli
  • Data kemudian disimpan di cache untuk request berikutnya

Time-To-Live (TTL)

  • Waktu maksimal data disimpan di cache
  • Setelah TTL habis, data dianggap expired dan dihapus
  • TTL disesuaikan dengan seberapa sering data berubah
  • Data yang jarang berubah bisa memiliki TTL lebih panjang

Praktik Terbaik

  • Cache data yang sering diakses dan jarang berubah
  • Jangan cache data sensitif tanpa enkripsi
  • Pantau cache hit ratio untuk mengukur efektivitas
  • Beri TTL yang sesuai, jangan terlalu pendek atau terlalu panjang
  • Siapkan fallback ke sumber asli jika cache tidak tersedia