CDN & Edge Caching — Performance

CDN & Edge Caching Content Delivery Network (CDN) adalah jaringan server yang tersebar di seluruh dunia. Alih-alih semua request pergi ke origin server (misalny

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:

  1. Cache busting — Sertakan hash di nama file (main.a3b4c5.js)
  2. Purge API — Panggil API CDN untuk hapus cache tertentu
  3. Versioning — Ganti path URL (/v2/api/...)

Metrik CDN