Web siteleri için SSR (sunucu tarafı renderlama) nedir, nasıl çalışır ve SEO, hız ile kullanıcı deneyimi açısından CSR veya SSG'ye kıyasla ne zaman tercih edilir öğrenin.

Sunucu tarafı renderlama (SSR), sunucunun bir sayfanın HTML'ini, ziyaretçi isteği geldiğinde ürettiği ve tarayıcıya görüntülemeye hazır olarak gönderdiği bir sayfa oluşturma yöntemidir.
Basitçe söylemek gerekirse, SSR tipik "boş iskelet önce" modelini tersine çevirir: çoğunlukla boş bir sayfa gönderip tarayıcıdan hemen içeriği oluşturmasını istemek yerine, sunucu ilk render işini yapar.
SSR ile insanlar genellikle içeriği daha erken görür—metin, başlıklar ve düzen hızlıca ortaya çıkabilir çünkü tarayıcı gerçek HTML'i hemen alır.
Bundan sonra sayfanın tam etkileşimli olması için yine JavaScript gerekir (butonlar, menüler, formlar, dinamik filtreler). Yaygın akış şöyledir:
Bu “önce içeriği göster, sonra etkileşimi ekle” düzeni, SSR'nin algılanan hız tartışmalarında sıkça gündeme gelmesinin nedenidir.
SSR, “sunucuda barındırmak” anlamına gelmez (neredeyse her şey sunucuda barındırılır). SSR, ilk HTML'in nerede üretildiği ile ilgilidir:
Dolayısıyla birçok barındırma ortamında—geleneksel sunucular, serverless fonksiyonlar veya edge runtime'lar—SSR kullanabilirsiniz; hangi framework ve dağıtım modelini seçtiğinize bağlıdır.
SSR, yaygın render stratejilerinden sadece biridir. Sonraki bölümlerde SSR vs CSR (client-side rendering) ve SSR vs SSG (static site generation) karşılaştırılacak; hız, kullanıcı deneyimi, önbellekleme stratejileri ve SEO sonuçları üzerindeki etkiler açıklanacaktır.
SSR, sunucunun sayfanın HTML'ini tarayıcıya ulaşmadan önce hazırlaması anlamına gelir. Genelde boş bir HTML kabuğu göndermek ve tarayıcıya sayfayı baştan oluşturmasını söylemek yerine sunucu, "okunmaya hazır" bir sayfanın HTML'ini iletir.
/products/123). Tarayıcı web sunucunuza bir istek gönderir.SSR genellikle HTML artı bir JavaScript paketi gönderir. HTML, hemen gösterim içindir; JavaScript ise filtreler, modal'lar ve "sepete ekle" gibi istemci tarafı davranışları sağlar.
HTML yüklendikten sonra tarayıcı JavaScript paketini indirir ve mevcut işaretlemeye olay dinleyicileri bağlar. Bu devretme birçok framework'ün hydration dediği işlemdir.
SSR ile sunucu istek başına daha fazla iş yapar—veri çekme ve markup render etme—bu yüzden sonuçlar API/veritabanı hızına ve üretilen çıktının ne kadar iyi önbelleklendiğine sıkı sıkıya bağlıdır.
SSR, sunucudan "okunmaya hazır" bir HTML sayfası gönderir. Bu, içeriğin hızlı görünmesi açısından iyidir, ama sayfanın otomatik olarak etkileşimli olmasını sağlamaz.
Çok yaygın bir kurulum şöyledir:
SSR, insanların sayfayı görme hızını iyileştirebilir; hydration ise sayfanın uygulama gibi davranmasını sağlar.
Hydration, istemci tarafı JavaScript'in statik HTML'i devralıp etkileşimi eklediği süreçtir: tıklama işleyicileri, form doğrulamaları, menüler, dinamik filtreler ve durumlu UI bileşenleri.
Bu ek adım, kullanıcının cihazında CPU zamanı ve bellek kullanımı gerektirir. Daha yavaş telefonlarda veya yoğun sekmelerde hydration belirgin biçimde gecikebilir—HTML hızlı gelse bile.
JavaScript yavaş yüklendiğinde kullanıcılar içeriği görebilir ama "ölü" bir arayüzle karşılaşabilir: butonlar tepki vermez, menüler açılmaz ve input'lar gecikebilir.
JavaScript tamamen başarısız olursa (engellenmiş, ağ hatası, script çökmesi), SSR yine de temel içeriğin görünmesini sağlar. Ancak JavaScript'e dayanan uygulama özellikleri çalışmaz; bunun için normal linklerin gezinmeyi sağlaması veya formların kodsuz gönderilmesi gibi geri dönüşümler tasarlanmış olmalıdır.
SSR, HTML'in nerede üretildiği ile ilgilidir. Birçok SSR sitesi hâlâ önemli miktarda JavaScript gönderir—bazen bir CSR uygulaması kadar fazla—çünkü etkileşim için tarayıcıda çalışan koda ihtiyaç vardır.
Server-side rendering (SSR) ve client-side rendering (CSR) aynı görünüşte sayfalar üretebilir, fakat işin sırası farklıdır—ve bu da sayfanın nasıl hissettirdiğini değiştirir.
CSR ile tarayıcı genellikle önce bir JavaScript paketi indirir, sonra bunu çalıştırarak HTML'i oluşturur. Bu iş bitene kadar kullanıcı boş bir ekran, spinner veya iskelet arayüz görebilir. Bu, ilk görünümün yavaş hissetmesine neden olabilir.
SSR ile sunucu görüntülenmeye hazır HTML gönderir. Kullanıcılar başlıkları, metni ve düzeni daha erken görebilir; bu, özellikle yavaş cihazlar veya ağlarda algılanan hızı iyileştirir.
CSR, uygulama yüklendikten sonra öne çıkar: uygulama tarayıcıda çalıştığı için ekranlar arası gezinme çok hızlı olabilir.
SSR ilk bakışta daha hızlı hissedilebilir ama sayfanın tam etkileşimli hale gelmesi için JavaScript gerekir (hydratation). JavaScript ağırsa kullanıcılar içeriği çabuk görüp bir süre beklemek zorunda kalabilir.
SSR ve SSG ziyaretçiler için benzer görünebilir—ikisi de çoğu zaman gerçek HTML gönderir. Ana fark HTML'in ne zaman oluşturulduğudur.
SSG ile site genellikle dağıtım/derleme sırasında HTML üretir. Bu dosyalar bir CDN üzerinden statik varlık olarak sunulabilir.
SSG avantajları:
Takas: içerik sık değişiyorsa yeniden derleyip deploy etmek veya sayfaları kademeli olarak güncellemek gerekir.
SSR ile sunucu HTML'i her istekte (veya önbellek kaçırdığında) üretir. Bu, içeriğin en güncel olması gerektiği veya ziyaretçi özel içerik görmesi gerektiği durumlar için uygundur.
SSR uygun senaryolar:
Takas: sürekli yeniden derlemek yerine istek zamanında çalışmak derleme süresini ortadan kaldırır, ama sunucu tarafında daha fazla iş anlamına gelir—bu da TTFB ve işletme maliyetini etkiler.
Birçok modern site hibrittir: pazarlama ve doküman sayfaları SSG, hesap alanları veya arama sonuçları SSR ile sunulur.
Pratik karar soruları:
Rota bazında rendering stratejisi seçmek genelde hız, maliyet ve güncellik arasında en iyi dengeyi verir.
Sunucu tarafı renderlama genellikle SEO'yu iyileştirir çünkü arama motorları bir sayfayı isteyince anlamlı içeriği hemen görebilir. Boş bir HTML kabuğu yerine başlıklar, metin ve linkler doğrudan sunulur.
İçeriğin daha erken keşfi. HTML zaten içeriği içeriyorsa, tarayıcılar ve botlar sayfayı daha hızlı ve tutarlı şekilde indeksleyebilir—özellikle büyük sitelerde tarama bütçesi ve zamanlama önemliyse.
Daha güvenilir render. Modern arama motorları JavaScript çalıştırabiliyor olsa da bu her zaman anlık veya öngörülebilir değildir. Bazı botlar JavaScript'i yavaş çalıştırır, erteleyebilir veya kaynak kısıtları altında atlayabilir. SSR, tarayıcıya "umarım bot JS'i çalıştırır" bağımlılığını azaltır.
Sayfa içi SEO gereklilikleri. SSR, şu sinyalleri başlangıç HTML'inde kolayca çıktılamanızı sağlar:
İçerik kalitesi ve niyet. SSR, arama motorlarının içeriğinize erişmesini kolaylaştırır ama içeriğinizin faydalı, özgün veya arama amaçlarıyla uyumlu olmasını sağlamaz.
Site yapısı ve iç linkleme. Net navigasyon, mantıklı URL yapısı ve güçlü iç linkleme hâlâ keşfedilebilirlik ve sıralama için önemlidir.
Teknik SEO hijyeni. İnce içerikli sayfalar, kopya URL'ler, kırık canonical'lar veya yanlış noindex kuralları gibi sorunlar SSR olsa bile kötü sonuçlara yol açabilir.
SSR'yi crawl ve render güvenilirliğini artıran güçlü bir temel olarak düşünün; doğrudan sıralama için sihirli bir çözüm değildir.
SSR etrafındaki performans konuşmaları genellikle birkaç temel metrik ve bir kullanıcı hissi etrafında döner: "Sayfa hızlı göründü mü?" SSR, insanların görme süresini iyileştirebilir ama aynı zamanda sunucuya ve hydration'a ek iş yükü getirebilir.
TTFB (Time to First Byte) sunucunun herhangi bir şeyi göndermeye başlaması için geçen süredir. SSR'de sunucunun veri çekmesi ve HTML'i render etmesi gerekebileceği için TTFB daha kritik hale gelir. Sunucunuz yavaşsa SSR TTFB'yi kötüleştirebilir.
FCP (First Contentful Paint) tarayıcının ilk içeriği çizdiği zamandır. SSR genelde FCP'yi iyileştirir çünkü tarayıcıya görüntülenmeye hazır HTML gelir.
LCP (Largest Contentful Paint) genellikle sayfadaki en büyük ana öğe (hero başlık, büyük resim, ürün başlığı) görünür hale geldiğinde ölçülür. SSR LCP'yi iyileştirebilir—ama HTML hızlı gelmeli ve kritik CSS/asset'ler render'ı engellememelidir.
SSR isteğe bağlı olarak sunucuda ek iş yaratır (önbellek yoksa her istek için). İki yaygın darboğaz:
Pratik çıkarım: SSR performansı genellikle framework'ten çok veri yolunuzla ilgilidir. API çağrılarını azaltmak, daha hızlı sorgular kullanmak veya sayfanın parçalarını önceden hesaplamak front-end optimizasyonlarından daha büyük fark yaratabilir.
SSR ilk görüntü hızında iyidir: kullanıcılar içeriği daha erken görebilir, daha erken kaydırabilir ve site daha hızlı gibi hissedilir. Ancak etkileşim için hydration hâlâ JavaScript gerektirir.
Bu bir takas yaratır:
En hızlı SSR genellikle önbelleğe alınmış SSR'dir. Üretilen HTML'i (CDN, reverse proxy veya uygulama katmanında) önbelleğe alabiliyorsanız, tekrar render etmeye ve yenilenen veri çağrılarına gerek kalmaz—bu da TTFB ve dolayısıyla LCP'yi iyileştirir.
Anahtar, içeriğinizle uyumlu bir önbellekleme stratejisi seçmektir (genel vs kişiselleştirilmiş) ki hızı artırırken yanlış kullanıcıya veri göndermeyesiniz.
Her istek sunucunuzun HTML'i yeniden üretmesine neden oluyorsa SSR yavaş hissedebilir. Önbellekleme bunu düzeltir—ama yalnızca neyin güvenle önbelleğe alınabileceğini dikkatle belirlediğiniz sürece.
Çoğu SSR yığını birden fazla önbellek katmanı kullanır:
Önbelleğe alınmış bir SSR cevabı yalnızca önbellek anahtarı çıktıdaki tüm farklılıkları kapsıyorsa doğru olur. URL dışında sık değişenler:
HTTP bu noktada yardımcı olur: yanıtınız istek başlıklarına göre değişiyorsa Vary header'ını kullanın (örn. Vary: Accept-Language). Vary: Cookie kullanımında dikkatli olun—önbellek isabet oranlarını kötüleştirebilir.
Cache-Control ile davranışı tanımlayın:
public, max-age=0, s-maxage=600 (CDN/proxy'de 10 dakika önbellek)stale-while-revalidate=30 (biraz eski HTML'i servis ederken arka planda yenile)Özel kullanıcı verisi içeren HTML'i kesinlikle paylaşılacak şekilde önbelleğe almayın. Güvenli bir desen, genel bir shell'i önbelleğe almak ve kişiselleştirilmiş verileri yükledikten sonra doldurmaktır. Veya sunucuda render yapıp yanıtı private, no-store olarak işaretleyin. Bir hata burada hesap bilgilerini sızdırabilir.
SSR, ilk yükte sayfaları daha dolu ve hızlı gösterebilir; ama karmaşıklığı sunucu tarafına kaydırır. Karar vermeden önce neyin ters gidebileceğini ve takımların neleri şaşkınlıkla karşıladığını bilmek önemlidir.
SSR ile siteniz sadece CDN'deki statik dosyalar değildir. Artık isteğe bağlı HTML render eden bir sunucu (veya serverless) çalıştırıyorsunuz.
Bu, runtime konfigürasyonu, güvenli dağıtımlar (rollback önemli), gerçek zamanlı davranış izleme: hata oranları, yavaş istekler, bellek kullanımı ve bağımlılık hataları gibi sorumluluklar getirir. Kötü bir sürüm tüm sayfa isteklerini hemen etkileyebilir.
SSR genelde istek başına daha fazla CPU kullanır. HTML renderı hızlı olsa bile her ziyaret için sunucularınızın iş yapması gerekir.
Statik barındırmaya kıyasla maliyet artışı:
İstek zamanlı render yüzünden karşılaşılabilecek sorunlar:
SSR kodunuz harici bir API çağırıyorsa, yavaş bir bağımlılık ana sayfayı yavaş hale getirebilir. Bu nedenle timeout, fallback ve önbellekleme zorunlu denebilecek uygulamalardır.
Geliştiricilerin sık yaptığı bir hata, sunucunun render ettiği HTML'in istemcide hydration sırasında oluşan HTML ile tam olarak eşleşmemesidir. Bu uyarılara, flicker'a veya bozuk interaktiviteye neden olabilir.
Bunlar genelde rastgele değerler, zaman damgaları, kullanıcıya özel veriler veya tarayıcıya özel API'lerin sunucu renderında korunmamasından kaynaklanır.
"SSR" seçmek genelde sunucuda HTML render edip daha sonra tarayıcıda interaktivite sağlayan bir framework seçmeyi de içerir. İşte yaygın seçenekler ve etrafında dolaşan terimler.
Next.js (React) birçok ekip için varsayılan seçimdir. Route bazında SSR, statik üretim, streaming ve farklı deployment hedeflerini (Node sunucuları, serverless ve edge) destekler.
Nuxt (Vue) Vue ekipleri için benzer bir deneyim sunar; dosya tabanlı yönlendirme ve esnek render modları vardır.
Remix (React) web standartlarına ve nested routing'e önem verir. Veri ağırlıklı uygulamalarda, yönlendirme ve veri yüklemenin yakın bağlı olması istendiğinde tercih edilir.
SvelteKit (Svelte) SSR, statik çıktı ve farklı hostlar için adaptörler sunar; hafif his ve basit veri yükleme modeline sahiptir.
Ekipte kullanılan UI kütüphanesi, nasıl host etmek istediğiniz (Node, serverless, edge) ve önbellekleme/streaming/veri yükleme üzerinde ne kadar kontrol istediğiniz seçimde belirleyicidir.
Tam bir SSR yığınına geçmeden önce hızlıca denemek isterseniz, bir platform prototip döngüsünü hızlandırabilir. Örneğin Koder.ai gibi araçlar konuşma tabanlı bir arayüzden üretime benzer bir uygulama prototipi oluşturmanıza yardımcı olabilir—genellikle React frontend ve Go + PostgreSQL backend ile—ve planlama modu, snapshot'lar ve rollback gibi özelliklerle yineleme sürecini kolaylaştırır. Bu tür bir "prototipten dağıtıma" döngüsü, gerçek TTFB/LCP etkisini ölçmeyi tahmin etmeye tercih ettirir.
SSR, sayfaların hızlı hazır hissetmesini ve arama motorları ile sosyal önizleme botları tarafından güvenilir şekilde okunmasını istediğinizde en değerlidir. Bu, büyülü bir hız düğmesi değil ama ilk izlenimlerin önemli olduğu durumlarda doğru bir takastır.
SSR genelde şu durumlarda öne çıkar:
Sayfalarınız herkese açık ve keşfedilebilirlik önemliyse SSR genelde değerlendirmeye değerdir.
SSR şu durumlarda uygun olmayabilir:
Bunlarda CSR veya hibrit yaklaşımlar altyapıyı sade tutabilir.
SSR'yi düşünün eğer:
SSR iyi bir seçim olabilir, ama başarının yolu gerçek kısıtlar ışığında karar vermekten geçer—sadece "daha hızlı" demekten değil. Bu kontrol listesi seçimi test etmenize yardımcı olur.
Prototype yapmadan önce üretime benzer koşullarda ölçüm alın:
Uyarı panoları kurun:
Eğer kontrol listesi soru işaretleri yaratıyorsa, bir hibrit yaklaşmayı (SSR + SSG) değerlendirin: sabit sayfaları SSG ile önceden renderlayın, tazelik veya kişiselleştirme gereken yerlerde SSR kullanın. Bu genelde hız ve karmaşıklık arasında en iyi dengeyi verir.
Prototipleme kararı aldıysanız, döngüyü kısa tutun: minimal bir rota SSR ile yayınlayın, önbellekleme ekleyin ve ölçün. Dağıtım ve geri alma süreçlerini kolaylaştıran araçlar işinizi hızlandırabilir; örneğin Koder.ai dağıtım/host desteği ve kaynak kodu dışa aktarma gibi özelliklerle SSR performansını doğrulamayı kolaylaştırabilir.
SSR (server-side rendering), bir kullanıcı bir URL isteğinde bulunduğunda sunucunun sayfanın HTML'ini ürettiği ve ardından tarayıcıya görüntülemeye hazır bu HTML'i gönderdiği anlamına gelir.
Bu, "sunucuda barındırılmak" ile aynı şey değildir (neredeyse her şey sunucuda barındırılır). SSR özel olarak ilk HTML'in nerede üretildiğini tanımlar: her istek için (veya önbellek kaçırması durumunda) sunucuda.
Tipik bir SSR akışı şöyle görünür:
/products/123).Büyük UX farkı: gerçek HTML önce gelir, bu sayede kullanıcılar genellikle içeriği daha erken okuyabilir.
SSR kullanıcıların içeriği görme hızını artırır, ancak uygulama benzeri davranış için JavaScript hâlâ gereklidir.
Çoğu SSR sitesi şunları gönderir:
Yani SSR genellikle “önce içerik, sonra etkileşim” şeklindedir; “JavaScript yok” demek değildir.
Hydration, tarayıcı tarafında JavaScript'in sunucu tarafından render edilmiş HTML'i “aktif” hale getirme işlemidir.
Pratikte hydration şunları yapar:
Düşük performanslı cihazlarda veya büyük paketlerde kullanıcılar içeriği hızlıca görse bile, hydration bitene kadar bir süre "etkisiz" bir arayüzle karşılaşabilirler.
CSR (client-side rendering) genellikle önce JavaScript paketini indirir ve sonra tarayıcıda HTML'i oluşturur; bu süreç bitene kadar kullanıcı boş bir ekran, spinner veya iskelet arayüz görebilir.
SSR ise görüntülenmeye hazır HTML'i hemen gönderir; bu, ilk izlenimi hızlandırır.
Kısa bir kural:
SSG (static site generation) HTML'i yayın zamanında/derleme sırasında üretir ve dosyaları CDN üzerinden statik olarak sunar — çok iyi önbellekleme ve yüksek trafik altında öngörülebilirlik sağlar.
SSR ise HTML'i istek zamanında (veya önbellek kaçırdığında) üretir; bu, içeriğin taze olması veya ziyaretçi bağlamına göre değişmesi gerektiğinde faydalıdır.
Birçok site hibrit çalışır: stabil pazarlama ve dokümantasyon sayfaları SSG; arama, envanter gibi dinamik parçalar SSR ile sunulur.
SSR, arama motorlarının sayfanızın anlamlı içeriğini doğrudan görmesini sağlayarak SEO'ya yardımcı olabilir. Boş bir HTML iskeleti yerine başlıklar, metin ve linkler hemen görünür.
SSR işe yarar:
Ancak SSR şunları otomatik olarak çözmez:
İlgili metrikler:
SSR performansı çoğunlukla framework'ten çok (API/DB gecikmeleri, round-trip'ler) ve bağlıdır.
SSR çıktısını önbelleğe almak çok faydalıdır ama kişiselleştirilmiş HTML'i yanlış kullanıcıya servis etmemeye dikkat etmelisiniz.
Pratik önlemler:
Yaygın SSR tuzakları:
Azaltma: zaman aşımı ve fallback'ler, veri round-trip'lerini azaltma, önbellekleme katmanları ekleme ve sunucu/istemci renderlarını deterministik tutma.
Cache-Control ile önbelleğe alın (s-maxage, stale-while-revalidate).Vary kullanın (Vary: Accept-Language), Vary: Cookie dikkatle kullanılmalı.private, no-store tercih edin veya yalnızca kullanıcı başına önbellekleme yapın.Güvenli seçenek: genel bir shell önbelleğe alın, kişiselleştirme verilerini yüklemeden sonra alın.