Lewati ke konten
Pengembangan Web

Cache Components Next.js 16: Panduan Lengkap

M. Irfan Ramadhan2 menit baca
Rak server data center dengan lampu indikator biru menyala di ruangan gelap.
Foto: Pexels
Daftar Isi

Cache Components adalah model caching baru di Next.js 16: data fetching dinamis secara default, lalu bagian yang perlu disimpan sementara ditandai eksplisit lewat directive "use cache" di level route, komponen, atau fungsi. Model ini membalik total default caching implisit yang dipakai Next.js 15 dan versi-versi sebelumnya.

Apa Itu Cache Components di Next.js 16?

Cache Components adalah fitur yang memberi kontrol granular atas caching: developer memilih sendiri route, komponen React, atau fungsi mana yang di-cache, bukan Next.js yang menebak secara otomatis. Menurut dokumentasi resmi directive use cache, directive ini bisa ditulis di puncak sebuah file (semua export di file itu ikut di-cache) atau inline di dalam fungsi/komponen tertentu saja.

Kenapa Perubahan Ini Penting

Sebelum Next.js 16, banyak developer kesulitan menebak kapan sebuah fetch benar-benar di-cache dan kapan tidak, karena perilakunya implisit dan bergantung konfigurasi tersembunyi. Cache Components menghilangkan tebakan itu: setiap halaman, komponen, dan fungsi berjalan dinamis di request time secara default, kecuali developer secara sadar menandainya cacheable.

Bagaimana Cara Kerja Directive use cache?

Directive ini dipasang sebagai baris pertama sebuah fungsi async atau file, mirip pola "use client"/"use server" yang sudah lebih dulu ada di App Router:

async function getArtikel(slug: string) {
  "use cache";
 
  const res = await fetch(`https://api.contoh.com/artikel/${slug}`);
  return res.json();
}

Syarat wajibnya: fungsi atau komponen yang dipasangi "use cache" harus berbentuk async, karena Next.js perlu menunggu hasilnya sebelum menyimpannya ke cache. Ada juga varian "use cache: private" untuk data yang spesifik per pengguna (misalnya isi keranjang belanja), yang disimpan terpisah dan tidak dibagikan antar user seperti cache publik biasa.

Apa Itu cacheLife dan cacheTag?

Dua API pelengkap "use cache" yang mengatur durasi dan cara menghapus cache:

  • cacheLife() mengatur tiga angka: stale (berapa lama nilai cache dipakai tanpa pengecekan ulang), revalidate (kapan pembaruan latar belakang dipicu), dan expire (batas maksimum sebelum entri dihapus paksa). Bisa memakai profil bawaan seperti "max", "hours", "days", atau objek kustom seperti { expire: 3600 }.
  • cacheTag() memberi label pada data yang di-cache, supaya bisa dihapus manual lewat revalidateTag di Server Action begitu data sumbernya berubah — pola yang sudah dibahas di artikel revalidatePath vs revalidateTag: kapan pakai?.
import { unstable_cacheLife as cacheLife, unstable_cacheTag as cacheTag } from "next/cache";
 
async function getProduk(id: string) {
  "use cache";
  cacheLife("hours");
  cacheTag(`produk-${id}`);
 
  const res = await fetch(`https://api.contoh.com/produk/${id}`);
  return res.json();
}

Kapan Sebaiknya Pakai Cache Components?

Tiga pola pemakaian yang paling umum:

Jenis kontenContohPendekatan
Statis nyaris permanenHalaman legal, changelog"use cache" + cacheLife("max")
Berubah saat event tertentuArtikel dipublikasikan, produk diperbarui admin"use cache" + cacheTag() + revalidateTag
Sepenuhnya dinamis per penggunaKeranjang belanja, dashboard personalTanpa "use cache", dibungkus Suspense

Aturan praktisnya: mulai dari dinamis (default Next.js 16), lalu tambahkan "use cache" hanya pada bagian yang terbukti aman disimpan sementara — bukan sebaliknya menandai semuanya cacheable sejak awal lalu mencari bug data basi belakangan.

Ringkasan

  • Cache Components membalik default caching Next.js: dinamis dulu, di-cache hanya kalau ditandai eksplisit lewat "use cache".
  • Fungsi/komponen yang memakai "use cache" wajib async; "use cache: private" tersedia untuk data spesifik per pengguna.
  • cacheLife() mengatur durasi (stale/revalidate/expire), cacheTag() memberi label untuk dihapus manual lewat revalidateTag — lengkapi bacaan di revalidatePath vs revalidateTag: kapan pakai? dan cara upgrade Next.js 15 ke Next.js 16 kalau proyeknya masih di versi sebelumnya.
  • Butuh bantuan mengaudit atau menerapkan strategi caching Next.js App Router seperti ini di proyek sendiri? Lihat layanan web development yang ditawarkan.

nextjs · nextjs-16 · cache-components · use-cache · caching

Pertanyaan yang Sering Diajukan

Apa itu Cache Components di Next.js 16?

Cache Components adalah model caching baru Next.js 16 yang membuat data fetching dinamis secara default, lalu developer memilih sendiri bagian mana (route, komponen, atau fungsi) yang perlu di-cache lewat directive "use cache". Kebalikan dari model lama yang meng-cache secara implisit tanpa diminta.

Apa bedanya use cache dengan caching implisit di Next.js 15?

Next.js 15 dan versi sebelumnya meng-cache banyak hal secara implisit (fetch, route) yang sering membingungkan karena data terasa 'basi' tanpa jelas kenapa. Next.js 16 membalik default itu total: semuanya dinamis kecuali ditandai eksplisit dengan "use cache", sehingga perilaku caching lebih bisa diprediksi.

Apakah cacheLife dan cacheTag wajib dipakai bersama use cache?

Tidak wajib, keduanya opsional. Tanpa cacheLife, entri cache memakai profil default. cacheLife mengatur durasi (stale/revalidate/expire) memakai profil bawaan seperti "max" atau objek kustom, sedangkan cacheTag memberi label agar cache bisa dihapus manual lewat revalidateTag saat data berubah.

Apakah komponen yang pakai use cache harus berbentuk async?

Ya, itu syarat wajib. Fungsi atau komponen yang diberi directive "use cache" harus berupa fungsi async, karena Next.js perlu bisa menunggu (await) hasilnya sebelum menyimpannya ke cache. Komponen sinkron biasa tidak bisa dipasangi directive ini.

M. Irfan Ramadhan

SEO Specialist & Web Developer

Menulis tentang SEO teknis, GEO/AI search, dan pengembangan web modern berdasarkan pengalaman langsung mengerjakan proyek klien.