Next.js App Router'da caching nasıl çalışır? Next.js 15 ve 16 ile neler değişti?

Cevap

Next.js'te birden fazla cache katmanı vardır ve en büyük değişim şudur: Next.js 15 ile varsayılan davranış "her şeyi cache'le"den "açıkça istenmedikçe cache'leme"ye döndü; Next.js 16 ile de `"use cache"` direktifine dayalı Cache Components modeli geldi.

Katmanlar

KatmanNeredeNe saklar
Request memoizationSunucu, tek istekAynı render'daki aynı fetch çağrılarını tekilleştirir
Data cacheSunucu, kalıcıfetch sonuçları (opt-in)
Full route cacheSunucuStatik render edilmiş HTML ve RSC payload
Router cacheTarayıcıZiyaret edilen route'ların RSC payload'ı

Next.js 15 değişiklikleri

  • fetch istekleri artık varsayılan olarak cache'lenmez; fetch(url, { cache: "force-cache" }) veya next: { revalidate: 60 } ile açıkça istenir.
  • GET Route Handler'lar varsayılan olarak cache'lenmez.
  • Client router cache'te sayfa segmentleri varsayılan olarak yeniden kullanılmaz (staleTime 0).

Next.js 16: Cache Components

next.config içinde cacheComponents: true ile açılır. Bir fonksiyon, bileşen veya sayfa "use cache" ile cache'lenir; süre cacheLife, etiket cacheTag ile verilir. Cache'lenmeyen dinamik kısımlar <Suspense> içinde stream edilir (Partial Prerendering).

import { cacheLife, cacheTag } from "next/cache";

async function getProducts() {
  "use cache";
  cacheLife("hours");
  cacheTag("products");
  return db.product.findMany();
}

Invalidation

"use server";
import { revalidateTag, revalidatePath } from "next/cache";

export async function updateProduct(data: FormData) {
  await db.product.update(/* ... */);
  revalidateTag("products", "max"); // Next 16'da ikinci argüman (cacheLife profili) istenir
  revalidatePath("/products");
}

Next 16 ayrıca Server Action içinde anında güncel veri görmek (read-your-writes) için updateTag ve cache'lenmemiş veriyi yenilemek için refresh API'lerini ekledi.

Pratik kural: kullanıcıya özel veriyi (cookie, header okuyan) asla paylaşılan cache'e koymayın.

  1. next/image bileşeni normal img etiketine göre ne avantaj sağlar?KolayNext.jsFrontend
  2. Next.js'te Middleware (Proxy) ne işe yarar?OrtaNext.jsFrontend
  3. Server Actions nedir? Nasıl kullanılır?OrtaNext.jsFrontend
  4. Next.js App Router'da Server Component ile Client Component arasındaki fark nedir?OrtaNext.jsFrontend
  5. Next.js nedir? Sade React'e göre ne kazandırır?KolayNext.jsFrontend
  6. Next.js'te SSR, SSG ve ISR nasıl yapılandırılır?OrtaNext.jsFrontend

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle