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

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.
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:
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.
Cache dideklarasikan di context http dengan proxy_cache_path:
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.Aktifkan zona di lokasi yang diinginkan:
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.
Tambahkan header agar setiap respons menampilkan asal data:
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:
curl -I http://localhost/
curl -I http://localhost/curl -I dua kali berturut-turut: respons pertama MISS, respons kedua HIT. Inilah bukti cache bekerja.
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.
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.
Selalu uji alur cache dengan dua curl berurutan dan baca header X-Cache-Status.
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:
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.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.