Next.js 16 Caching Katmanları: Data Cache, Request Memoization ve Router Cache Mimarisi
Next.js App Router mimarisindeki en büyük yanlış anlaşılma caching sistemidir. Bu rehber; Request Memoization, Data Cache, Full Route Cache ve Router Cache katmanlarının tam olarak nasıl etkileşime girdiğini, bellek sızıntılarını önleme yöntemlerini ve kurumsal ölçekte revalidation stratejilerini pratik kod örnekleriyle ele almaktadır.
- Request Memoization sadece React render döngüsü boyunca yaşar; sunucu istekleri arasında paylaşılmaz.
- Data Cache, Node.js process restart edilse bile diske veya harici depolamaya persist edilebilir.
- Next.js 15 ve 16 ile birlikte fetch istekleri varsayılan olarak no-store (önbelleğe alınmaz) moduna geçmiştir; stratejik cache opt-in şarttır.
- revalidateTag() ve revalidatePath() çağrıları sunucu eylemleri (Server Actions) içinde tetiklenmelidir.
- İstemci tarafındaki Router Cache, sayfa geçişlerini anlık kılmakla birlikte dinamik verilerde router.refresh() gerektirebilir.
1. Next.js Caching Ekosistemine Genel Bakış
2. Dört Temel Katmanın Anatomisi
| Katman | Nerede Yaşar? | Ne Saklar? | Amaç | Yaşam Döngüsü |
|---|---|---|---|---|
| Request Memoization | Sunucu (Bellek) | fetch() fonksiyon dönüşleri | Aynı render ağacında çift çağrıyı önleme | Tek bir render isteği boyunca |
| Data Cache | Sunucu (Disk/Kalıcı) | HTTP API / DB Yanıtları | İstekler ve dağıtımlar arasında veriyi koruma | Kalıcı (Revalidate olana dek) |
| Full Route Cache | Sunucu (Disk/Edge) | HTML ve RSC Payload | Statik sayfaları sıfır CPU ile sunma | Build zamanı veya revalidation |
| Router Cache | İstemci (Tarayıcı) | Ziyaret edilen RSC segmentleri | Geri/İleri ve anlık sayfa geçişleri | Kullanıcı oturumu süresince |
3. Request Memoization: Aynı İsteği Tekrar Etmeme Sanatı
// components/Header.tsx ve components/Sidebar.tsx içinde ayrı ayrı çağrılsa bile
// ağ üzerinden sadece 1 adet istek gönderilir:
async function getCurrentUser() {
const res = await fetch('https://api.monova.digital/user/me');
return res.json();
}
export async function Header() {
const user = await getCurrentUser();
return <header>Hoş geldiniz, {user.name}</header>;
}4. Data Cache & Zaman Temelli / On-Demand Revalidation
Kurumsal sistemlerde zaman temelli (time-based) revalidate yerine her zaman etiket tabanlı (tag-based) revalidateTag() kullanın. Bu sayede veri güncellenmediği sürece sonsuza dek önbellekten milisaniyelik hızla sunulur.
// Veriyi etiketle önbelleğe alma:
export async function getProduct(slug: string) {
const res = await fetch(`https://api.monova.digital/products/${slug}`, {
next: { tags: ['products', `product-${slug}`] }
});
return res.json();
}
// Bir Server Action içinde anında geçersiz kılma:
'use server';
import { revalidateTag } from 'next/cache';
export async function updateProductStock(slug: string) {
// DB güncellemesi yapıldıktan sonra:
revalidateTag(`product-${slug}`);
}7. Sahada En Sık Yapılan 5 Caching Hatası
9. Sonuç & Production Kontrol Listesi
Konuyla İlgili Sıkça Sorulan Sorular
Evet. Next.js 15 ve 16 sürümlerinde fetch istekleri artık varsayılan olarak no-store modundadır. Veriyi önbelleğe almak istiyorsanız açıkça force-cache veya next: { revalidate: ... } belirtmelisiniz.
Evet, ORM ve doğrudan SQL sorgularını Data Cache katmanına bağlamak için Next.js tarafından resmi olarak sağlanan ve yaygın kullanılan yöntemdir.
Next.js konfigürasyonunda experimental.staleTimes ayarı ile dinamik ve statik segmentlerin tarayıcıda kaç saniye taze tutulacağı milimetrik olarak yönetilebilir.
Bu Stratejiyi Profesyonelce Uygulayalım
Uzman ekibimizle markanız için bu metodolojiyi anahtar teslim hayata geçirin.
Okumaya Devam Edin
App Router Mimarisinde Server Actions ile Güvenli Veri Akışı
App Router Mimarisinde Server Actions ile Güvenli Veri Akışı konusunda sektör standartlarını belirleyen teknik detaylar, uygulama adımları ve performans çıkarımları.
React Server Components (RSC) ile Sıfır İstemci JavaScript Boyutu
React Server Components (RSC) ile Sıfır İstemci JavaScript Boyutu konusunda sektör standartlarını belirleyen teknik detaylar, uygulama adımları ve performans çıkarımları.
Next.js 16 Caching Katmanları: Data Cache, Request Memoization ve Router Cache
Next.js 16 Caching Katmanları: Data Cache, Request Memoization ve Router Cache konusunda sektör standartlarını belirleyen teknik detaylar, uygulama adımları ve performans çıkarımları.
Bu konudaki tecrübemizi markanız için kullanalım.
Gelin, dijital büyüme hedeflerinizi birlikte planlayalım ve hayata geçirelim.