CDN & Edge Caching
Content Delivery Network (CDN) adalah jaringan server yang tersebar di seluruh dunia. Alih-alih semua request pergi ke origin server (misalnya di Jakarta), CDN menyajikan konten dari server terdekat dengan pengguna — disebut Point of Presence (PoP) atau edge node.
Kenapa CDN Penting?
Tanpa CDN:
User (London) → Origin Server (Jakarta) = ~200ms latency
Dengan CDN:
User (London) → Edge Node (Amsterdam) = ~10ms latency
Jaringan fiber transatlantik memiliki batas fisik kecepatan cahaya — CDN membantu dengan membawa konten lebih dekat ke pengguna.
Cache-Control Header
CDN mengikuti instruksi dari header HTTP Cache-Control:
# Cache 1 tahun di CDN dan browser
Cache-Control: public, max-age=31536000, immutable
# Cache di CDN tapi tidak di browser
Cache-Control: public, s-maxage=86400, max-age=0
# Tidak boleh di-cache sama sekali
Cache-Control: no-store
# Selalu validasi ke origin sebelum serve
Cache-Control: no-cache
Stale-While-Revalidate di CDN
Cache-Control: public, max-age=60, stale-while-revalidate=600
CDN serve cache lama (hingga 10 menit) sambil fetch update dari origin di background. Pengguna tidak menunggu!
Edge Computing
Modern CDN seperti Cloudflare Workers dan Vercel Edge Functions memungkinkan kode JavaScript berjalan di edge node, bukan di origin:
// Berjalan di ratusan edge node di seluruh dunia
export default {
async fetch(request) {
const country = request.headers.get("CF-IPCountry");
// Sajikan konten yang dipersonalisasi per negara
// tanpa round trip ke origin!
return new Response(`Halo dari ${country}!`);
}
};
Cache Invalidation
Tantangan utama CDN: bagaimana memperbarui cache saat konten berubah?
Strategi:
- Cache busting — Sertakan hash di nama file (
main.a3b4c5.js) - Purge API — Panggil API CDN untuk hapus cache tertentu
- Versioning — Ganti path URL (
/v2/api/...)
Metrik CDN
- Cache Hit Ratio — Persentase request yang dilayani dari cache (target: >90%)
- TTFB (Time to First Byte) — Makin rendah makin baik (<200ms di edge)
- Bandwidth saved — Traffic yang tidak mencapai origin server