Belajar Nginx - HTTP Caching & Microcaching
Episode 8 of 21

Belajar Nginx - HTTP Caching & Microcaching

Episode ini menjelaskan cara mengurangi beban backend dengan proxy_cache, menyiapkan storage path, membaca status cache, dan menerapkan strategi microcaching untuk lonjakan trafik mendadak.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Backend aplikasi mahal untuk dijalankan. Setiap request berarti pemrosesan, query database, dan CPU. NGINX menawarkan senjata ampuh: HTTP caching. Respons yang sudah di-cache tidak lagi menyentuh backend, sehingga throughput bisa naik drastis. Episode 8 ini membahas cache dan microcaching.

Kalian akan menyiapkan penyimpanan cache dengan proxy_cache_path, mengaktifkannya di location dengan proxy_cache dan proxy_cache_valid, memantau efektivitas lewat header X-Cache-Status, serta menerapkan teknik microcaching untuk menahan lonjakan trafik yang tiba-tiba.

Manfaat Caching pada NGINX

Mengurangi Beban, Menaikkan Throughput

Ketika NGINX menangani request yang sama berulang kali, cache menyimpan respons lengkap di disk. Request berikutnya dilayani langsung dari cache tanpa menyentuh backend sama sekali:

  • Beban backend turun drastis: database dan CPU tidak lagi dibebani request identik.
  • Latensi turun: respons keluar dari cache yang berada dekat klien.
  • Throughput naik: NGINX sanggup melayani ribuan request per detik per worker.

Perlu diingat: cache bukan solusi untuk semua konten. Konten pribadi per user, seperti halaman profil, harus ditangani dengan hati-hati agar tidak bocor antar user.

Konfigurasi proxy_cache

Menyiapkan Storage Path

Cache dideklarasikan di context http dengan proxy_cache_path:

Deklarasi zona cache
http {
    proxy_cache_path /var/cache/nginx
                     keys_zone=my_cache:10m
                     levels=1:2
                     max_size=1g
                     inactive=60m;
}
  • keys_zone=my_cache:10m — nama zona dan ukuran metadata dalam memori.
  • levels=1:2 — struktur direktori dua level untuk menghindari satu folder berisi jutaan file.
  • max_size=1g — batas ukuran cache di disk.
  • inactive=60m — entri yang tidak diakses selama 60 menit dibersihkan.

Mengaktifkan Cache di Location

Aktifkan zona di lokasi yang diinginkan:

Aktifkan cache di location
location / {
    proxy_pass http://backend_app;
 
    proxy_cache my_cache;
    proxy_cache_valid 200 302 10m;
    proxy_cache_valid 404 1m;
}

proxy_cache_valid 200 302 10m; menyimpan respons status 200 dan 302 selama 10 menit. Baris tambahan memberi aturan berbeda untuk status 404.

Header Status Cache

Memantau Efektivitas dengan X-Cache-Status

Tambahkan header agar setiap respons menampilkan asal data:

Header status cache
location / {
    proxy_pass http://backend_app;
    proxy_cache my_cache;
    proxy_cache_valid 200 302 10m;
 
    add_header X-Cache-Status $upstream_cache_status;
}

Nilai $upstream_cache_status bisa berupa:

  • HIT — dilayani dari cache.
  • MISS — tidak ditemukan di cache, diambil dari backend.
  • EXPIRED — cache kedaluwarsa, di-refresh dari backend.
  • BYPASS — cache sengaja dilewati.
  • UPDATING — entri lama dikirim sementara refresh berlangsung.

Verifikasi dengan curl:

Periksa status cache
curl -I http://localhost/
curl -I http://localhost/

curl -I dua kali berturut-turut: respons pertama MISS, respons kedua HIT. Inilah bukti cache bekerja.

Teknik Microcaching

Menahan Flash Crowds

Microcaching menyimpan respons dinamik dalam waktu sangat pendek, biasanya 1-5 detik. Tujuannya bukan menghemat beban rata-rata, tapi melindungi backend dari flash crowds — lonjakan trafik mendadak, misalnya saat tautan viral atau event besar.

Konfigurasi microcaching
location / {
    proxy_pass http://backend_app;
    proxy_cache my_cache;
    proxy_cache_valid 200 302 1s;
    proxy_cache_lock on;
    proxy_cache_use_stale updating error timeout;
}
  • proxy_cache_valid 200 302 1s; — cache hanya 1 detik.
  • proxy_cache_lock on; — saat terjadi cache miss bersamaan, hanya satu request yang di-forward ke backend; sisanya menunggu.
  • proxy_cache_use_stale updating; — saat cache sedang di-refresh, klien tetap menerima versi lama.

Dengan microcaching, seribu request yang datang dalam 1 detik hanya satu yang menyentuh backend. Lonjakan trafik jadi tidak lagi meruntuhkan aplikasi.

Kapan Memakai Caching

Pilih Strategi yang Tepat

  • Halaman publik yang jarang berubah: cache 10-60 menit.
  • Halaman dinamik yang rawan dibanjiri trafik: microcaching 1-5 detik.
  • Konten per user: jangan di-cache di level NGINX tanpa key yang memisahkan user.
  • API dengan respons rahasia: pastikan tidak pernah masuk cache publik.

Selalu uji alur cache dengan dua curl berurutan dan baca header X-Cache-Status.

Penutup

Episode 8 memberi kalian kendali penuh atas cache NGINX: menyiapkan zona penyimpanan, mengaktifkan cache per location, memantau efektivitas lewat status header, dan menerapkan microcaching untuk ketahanan terhadap lonjakan trafik.

Inti yang harus dibawa pulang:

  • Cache mengurangi beban backend dan menaikkan throughput secara signifikan.
  • proxy_cache_path mendefinisikan zona penyimpanan dan aturan pembersihannya.
  • proxy_cache_valid menentukan lama respons disimpan per status code.
  • X-Cache-Status menunjukkan HIT, MISS, EXPIRED, atau UPDATING.
  • Microcaching 1-5 detik melindungi dari flash crowds.
  • proxy_cache_lock dan proxy_cache_use_stale menjaga cache tetap cepat saat miss.

Di episode 9 selanjutnya kita akan mengamankan NGINX dengan SSL/TLS (HTTPS) dan Let's Encrypt — konsep enkripsi TLS, server block HTTPS manual, otomatisasi sertifikat gratis dengan Certbot, auto-renewal, dan redirect HTTP ke HTTPS.

Belajar Nginx - HTTP Caching & Microcaching | Belajar Nginx