Digital Transformation
Cache
TL;DR: Cache adalah penyimpanan sementara data yang sering diakses agar permintaan berikutnya lebih cepat dan tidak membebani sumber asli. Cache adalah salah satu cara paling murah untuk memperbaiki Core Web Vitals dan menurunkan biaya server pada SaaS atau website bisnis Indonesia.
Apa itu Cache?
Cache menyimpan salinan data (halaman HTML, gambar, hasil query database, respons API) di lokasi yang lebih dekat atau lebih cepat dibanding sumber asli. Saat permintaan yang sama datang lagi, sistem mengambil salinan dari cache, bukan menghitung ulang atau mengambil dari database.
Cache dapat berada di banyak lapisan: browser pengguna, CDN, server aplikasi, atau memori in-process. Tiap lapisan punya kebijakan kadaluarsa (TTL) yang menentukan berapa lama salinan tetap dianggap segar.
Jenis Cache yang Sering Dipakai
| Lapisan | Contoh | Cocok Untuk |
|---|---|---|
| Browser cache | Cache-Control, ETag | Aset statis seperti gambar, CSS, JS |
| CDN cache | Cloudflare, Vercel Edge | Halaman publik yang sama untuk banyak pengguna |
| Application cache | Redis, Memcached | Hasil query database, sesi pengguna |
| Build-time cache | SSG, ISR | Halaman yang jarang berubah |
Pemilihan lapisan tergantung jenis konten dan tingkat dinamis data. Halaman blog yang sama untuk semua pengunjung cocok di CDN. Profil pengguna yang berbeda per orang cocok di application cache dengan key per user.
Cache Invalidation
Cache invalidation adalah proses menandai cache sebagai usang sehingga permintaan berikutnya mengambil data segar dari sumber asli. Tiga strategi umum adalah TTL (kadaluarsa otomatis setelah waktu tertentu), explicit invalidation (manual hapus key tertentu setelah update), dan stale-while-revalidate (tampilkan cache lama sambil ambil yang baru di belakang). Kombinasi strategi sering diperlukan untuk balance antara performa dan kesegaran data.
Kenapa Penting?
Cache adalah cara paling efektif untuk menurunkan LCP dan TTFB tanpa harus rewrite kode. Berdasarkan praktik yang saya pakai di proyek klien, mengaktifkan CDN cache yang benar pada halaman publik dapat menurunkan LCP dalam rentang 30-60% untuk pengunjung internasional. Selain kecepatan, cache juga menurunkan biaya database dan server karena query yang sama tidak dieksekusi berulang. Untuk UMKM dengan budget infrastruktur terbatas, dampak ini terasa langsung di tagihan bulanan. Dokumentasi web.dev tentang caching strategies memberikan rujukan teknis yang dapat dipakai sebagai standar.
Pertanyaan Umum
Berapa TTL yang ideal untuk halaman publik?
Bervariasi. Halaman blog yang jarang berubah bisa 1 jam sampai 1 hari di CDN. Halaman e-commerce dengan stok dinamis lebih aman di 1-5 menit dengan stale-while-revalidate. Halaman dengan harga yang sering berubah sebaiknya tidak di-cache di CDN, hanya di browser dengan validasi ETag.
Apakah cache bisa membuat pengguna melihat data lama?
Bisa, jika TTL terlalu panjang atau invalidation tidak dilakukan. Untuk data yang sensitif terhadap kesegaran (harga, stok, status pesanan), gunakan TTL pendek atau strategi explicit invalidation yang dipicu oleh event update.
Apakah cache di Next.js otomatis aktif?
Sebagian. Next.js secara default memakai cache build-time untuk halaman statis dan cache fetch untuk data fetching. Cache CDN tergantung platform hosting (Vercel Edge mengaktifkan otomatis untuk halaman statis). Untuk halaman dinamis, kontrol cache lebih spesifik dilakukan via revalidate dan headers Cache-Control.