EMZETT.
Giriş yap

Render stratejileri: SSR, SSG, ISR ve istemci tarafı render karşılaştırması

Kısaca: Bir web sayfası derleme zamanında (SSG), her istekte (SSR), periyodik olarak yeniden (ISR) veya tarayıcıda (CSR) üretilebilir; seçim hızı, tazeliği, maliyeti ve arama motoru uygunluğunu etkiler.

Biraz daha ayrıntılı: Soru şudur: HTML ne zaman ve nerede oluşur? Next.js gibi çerçeveler bunu sayfa başına seçmene izin verir.

Ayrıntılı

Stratejiler

  • SSG (statik site üretimi): HTML derleme zamanında üretilir ve bir CDN üzerinden sunulur. Çok hızlı, ucuz, güvenli; ancak yalnızca son derleme kadar günceldir. Blog, belgeler, wiki, açılış sayfaları için ideal.
  • SSR (sunucu tarafı render): sunucu HTML’i her istekte üretir; her zaman güncel ve kişiselleştirilebilir (çerezler), ancak daha yavaş ve daha pahalı (hesaplama süresi, muhtemelen veri tabanı).
  • ISR (artımlı statik yeniden üretim): süre sonu olan statik sayfa (revalidate: 3600); süre dolunca arka planda yeniden derlenir. Listeler, mağazalar, haberler için iyi bir uzlaşma.
  • CSR (istemci tarafı render): tarayıcı JavaScript’i yükler ve sayfayı oluşturur; girişin arkasındaki panolar için iyi, ilk yükleme süresi ve SEO için daha kötü.
  • Streaming/Suspense: sayfa parçalar hâlinde sunulur; önemli şeyler önce görünür.

Karar yardımcısı

GereksinimSeçim
Nadiren değişen içerik, çok trafikSSG
İçerik her dakika/saat değişirISR
Kullanıcıya göre farklı (sepet, profil)SSR veya CSR
Girişin arkasında, etkileşimliCSR (veya SSR + istemci bileşenleri)
SEO önemliSSG/ISR/SSR

Hibritler normaldir: statik kabuk, dinamik kısımlar streaming veya istemci sorgusuyla.

Etkiler

  • Veri tabanı yükü: SSR/ISR onu sorgular; önbellekleme (bkz. unstable_cache, revalidate) ve uzun süre sonu süreleriyle yük keskin biçimde düşer, özellikle boştayken duran ve hesaplama süresi faturalayan sunucusuz veri tabanlarında.
  • Maliyet ve hız: statik sayfaların CDN ile sunumu en ucuzudur.
  • Dayanıklılık: statik sayfalar veri tabanına ulaşılamasa bile çalışmaya devam eder; bu yüzden derlemeler veri tabanına bağımlı olmamalı ya da hataları yakalamalıdır.
  • Tazelik: isteğe bağlı yeniden doğrulama (etiketler/yollar) ile değişikliklerden sonra hedefli yeniden derleyebilirsin.

Uygulama

Statik başla, gerektiği yerde dinamik ekle. Lighthouse/Core Web Vitals ile ölç (LCP, CLS, INP). Önbellek başlıklarını uygun ayarla. Veri tabanı kesintisinde ve soğuk başlatmalarda davranışı test et. Next.js’te: export const revalidate = 3600, dynamic = 'force-dynamic', generateStaticParams, fetch ve önbellek seçenekleriyle sunucu bileşenleri (sürümünün belgelerine bak, API değişir).

Ayrıca bak: Next.js App Router, Önbellekleme stratejileri, Cache tag’leri ve revalidateTag, Lighthouse ve Core Web Vitals, Sunucusuz