Oluşturma

Google'ın dizine eklediği sayfayı oluşturmak için JavaScript'inizi nasıl çalıştırdığı — ayrıca oluşturma seçenekleri (CSR, SSR, SSG, hydration, ISR, edge, dinamik) ve bunların SEO ödünleşimleri.

İlk yayın tarihi: 23 Haz 2026 · Son güncelleme: 8 Ağu 2026 · Advanced
Diller
Bu sayfada 1 kanıt sinyali

Oluşturma, Google'ın evergreen, headless Chrome içindeki JavaScript'inizi — Web Rendering Service — çalıştırarak dizine eklediği DOM'u kurduğu adımdır. Neredeyse her sayfada, genellikle saniyeler-dakikalar içinde gerçekleşir; bu nedenle eski "iki dalgalı dizine ekleme" modeli büyük ölçüde eskimiştir ve sayfa başına oluşturma bütçesi yoktur. Oluşturucu durum bilgisi tutmaz, sayfayla etkileşime girmez ve agresif biçimde önbelleğe alır. Oluşturma seçeneğiniz SEO riskinizi belirler: SSR, statik/önceden oluşturma ve hydration güvenlidir; tam istemci tarafı oluşturma risklidir; dinamik oluşturma bir geçici çözümdür.

TL;DR — Google JS’nizi evergreen, headless Chromium olan Web Rendering Service içinde oluşturarak dizine eklediği DOM’u kurar. Bu neredeyse tüm sayfalarda gerçekleşir ve genellikle saniyeler ile dakikalar içinde tamamlanır; bu nedenle “iki dalgalı dizine ekleme” büyük ölçüde eskimiştir ve sayfa başına oluşturma bütçesi yoktur. WRS durum bilgisi tutmaz, izin istemlerini reddeder, sayfayla etkileşime girmez ve agresif biçimde önbelleğe alır. Oluşturma seçeneğiniz SEO riskinizi belirler: SSR / statik / önceden oluşturma / hydration düşük risklidir; tam CSR risklidir; dinamik oluşturma ise Google’ın karşı çıktığı bir geçici çözümdür. Bunun doğurduğu pratik JS sorunları için JavaScript SEO sayfasına bakın.

Oluşturma nerede yer alır

Google, JavaScript uygulamalarının üç aşamadan geçtiğini açıkça söylüyor: “Google processes JavaScript web apps in three main phases: 1. Crawling 2. Rendering 3. Indexing.” (terjemahan) “Google, JavaScript web uygulamalarını üç ana aşamada işler: 1. Tarama 2. Oluşturma 3. Dizine ekleme.” Evidence for this claim Google documents crawling, rendering, and indexing as the three main phases for processing JavaScript web apps. Scope: Google Search processing of JavaScript web applications; the phases can overlap operationally. Confidence: high · Verified: Google Search Central: Understand the JavaScript SEO basics Oluşturma köprüdür. Tarama ham HTML’yi getirir; oluşturma bitmiş DOM’u kurmak için JavaScript’i çalıştırır; dizine ekleme bu oluşturulmuş DOM’u okur ve oluşturucunun bulduğu yeni bağlantılar yeniden taramaya gönderilir. Google’ın sözleriyle: “During the crawl, Google renders the page and runs any JavaScript it finds using a recent version of Chrome, similar to how your browser renders pages you visit.” (terjemahan) “Tarama sırasında Google sayfayı oluşturur ve bulduğu JavaScript’i, tarayıcınızın ziyaret ettiğiniz sayfaları oluşturmasına benzer şekilde, Chrome’un güncel bir sürümünü kullanarak çalıştırır.”

Rendering is the bridge between fetching a URL and indexing its finished DOM; parity, interaction, state, and timing can break that bridge. Kaynak: JavaScript SEO

Google crawls a URL, renders its JavaScript to build the DOM, and indexes the result. Four practical failure modes branch from rendering: parity when the rendered DOM differs from expectations, interaction when content requires a scroll or click, state when content relies on cleared cookies or storage, and timing when content is deferred behind slow JavaScript.

© Patrick Stox LLC · CC BY 4.0 ·

Web Rendering Service

Google, Web Rendering Service (WRS) içinde oluşturma yapar — evergreen bir headless Chrome: “While Google Search runs JavaScript with an evergreen version of Chromium…” (terjemahan) “Google Arama JavaScript’i evergreen bir Chromium sürümüyle çalıştırırken…” güncel Chrome’u takip eder; bu nedenle modern JavaScript ve CSS özellikleri çalışır.

Ancak WRS tuhaf bir tarayıcıdır ve tuhaflıkları gerçek sorunların çoğuna neden olur:

  • Durum bilgisi tutmaz. JavaScript SEO rehberimde söylediğim gibi, “Google loads each page stateless like it’s a fresh load.” (terjemahan) “Google her sayfayı yeni bir yükleme gibi, durum bilgisi olmadan yükler.” Google’ın belgeleri ayrıntıları açıklar: “Local Storage and Session Storage data are cleared across page loads” (terjemahan) “Local Storage ve Session Storage verileri sayfa yüklemeleri arasında temizlenir” ve “HTTP Cookies are cleared across page loads.” (terjemahan) “HTTP çerezleri sayfa yüklemeleri arasında temizlenir.” İçeriğinizi sunmak için istemci tarafında kalıcı olan hiçbir şeye güvenmeyin.
  • İzinleri reddeder. “Expect Googlebot to decline user permission requests.” (terjemahan) “Googlebot’un kullanıcı izin isteklerini reddetmesini bekleyin.” Coğrafi konum, bildirim veya kamera isteminin arkasındaki içerik oluşturulmaz.
  • Etkileşime girmez. Kaydırma, tıklama veya üzerine gelme yoktur; bu olaylardan yalnızca biriyle yüklenen içerik varsayılan olarak görünmez. (Tembel yükleme ve sonsuz kaydırma hatalarının çoğu bunun kökünden çıkar; düzeltmeler JavaScript SEO sayfasındadır.)
  • Agresif biçimde önbelleğe alır. “Googlebot caches aggressively in order to reduce network requests and resource usage. WRS may ignore caching headers.” (terjemahan) “Googlebot ağ isteklerini ve kaynak kullanımını azaltmak için agresif biçimde önbelleğe alır. WRS önbellek başlıklarını yok sayabilir.” Bu, Google’ın JS veya CSS’nizin güncel olmayan bir sürümünü çalıştırabileceği anlamına gelir. Dosya parmak izi kullanarak düzeltin — dosya adlarını sürümleyin (app.4f2a9c.js); böylece içerik değişikliği yeni bir getirmeyi zorunlu kılar.

2026 deneyi: beş saniye kesin bir yürütme duvarı değildir

Temmuz 2026’da bildirilen üçüncü taraf bir WRS deneyi, beş saniyelik bir zaman aşımı varsaymak yerine gecikmiş JavaScript’i ve ağ etkinliğini test etti. Gözlemlenen oluşturucu sanal bir saat kullandı ve gerçek zamanda yaklaşık 6–12 saniye süren gecikmiş istekleri tamamladı. Kullanışlı sonuç sınırlıdır: tam olarak beş saniye sonra gerçekleşen her şeyin Google için otomatik olarak görünmez olduğu yaygın denetim kuralıyla çelişir. Her gecikmiş bağımlılığın tamamlanacağını, Google’ın süresiz beklediğini veya yavaş istemci tarafı tesliminin güvenli olduğunu kanıtlamaz.

Read the experiment and its methodology as third-party evidence alongside Google’s official statement that render-queue timing has no published fixed delay. In practice, test the final DOM and requested resources. A missing API response, interaction requirement, blocked script, or state dependency remains a real rendering failure even when a stopwatch-based “five-second rule” is not.

“İki dalgalı dizine ekleme” hâlâ geçerli mi?

Yıllarca zihinsel model “iki dalgalı dizine ekleme” idi: Google önce ham HTML’yi dizine ekler, sonra günler veya haftalar sonra JavaScript içeriğini oluşturup dizine eklemek için geri dönerdi. Bu model artık büyük ölçüde eskimiştir. Martin Splitt, iki dalga fikrinin giderek daha az rol oynadığını, birçok sayfanın JavaScript’e bağlı olmasa bile oluşturma aşamasından geçtiğini ve tarama, oluşturma ile dizine eklemenin zaman içinde yakınsadığını söyledi.

Uygulamada oluşturma neredeyse her sayfa için gerçekleşir ve genellikle hızlıdır. Google’ın güncel belgeleri, taranmış bir sayfanın “may stay on this queue for a few seconds, but it can take longer than that” (terjemahan) “bu kuyrukta birkaç saniye kalabilir, ancak daha uzun sürebilir” olduğunu söyler — yayımlanmış sabit bir gecikme veya zaman aşımı yoktur. Evidence for this claim Google says a crawled page may stay on the rendering queue for a few seconds, but it can take longer than that. Scope: Google's rendering queue for a page that returns a 200 status and is eligible for rendering. The source gives a variable duration, not a fixed timeout or service-level guarantee. Confidence: high · Verified: Google Search Central: rendering-queue duration Supports: A page may remain on the rendering queue for a few seconds or longer. Tarihsel bir veri noktası olarak Google çalışanları (Martin Splitt ve Tom Greenaway) bir zamanlar bu değeri yaklaşık beş saniyelik medyan, 90. yüzdelik dilimi ise dakikalar olarak ifade etti — eski korkunun ima ettiği “haftalar” değil. Bu değere JavaScript SEO rehberimde yer veriyorum; ancak onu güncel yayımlanmış bir ölçüm değil, tarihli bir konferans veri noktası olarak ele alın — Google bunu devam eden bir sayı olarak yeniden yayımlamadı ve yukarıdaki kuyruk zamanlaması alıntısı güncel resmî çerçevedir.

Ayrıca insanların hayal ettiği anlamda oluşturma bütçesi yoktur. Google, korumanız gereken sayfa başına “oluşturulması ne kadar pahalıydı” puanını izlemez. Oluşturma Google ölçeğinde ucuzdur — hayalî bir oluşturma bütçesini değil, kullanıcılarınızı ve performansı optimize edin.

Oluşturma seçenekleri

“HTML nerede oluşturuluyor?” SEO riskinizi belirleyen sorudur. Tüm seçenekler şunlardır:

The useful distinction is where initial HTML is produced and what work remains for the browser. Kaynak: Rendering

Static generation produces HTML at build time. Server-side rendering produces it per request. Client-side rendering relies on browser JavaScript. Hydration attaches client behavior to server or static HTML. Dynamic rendering varies output by requester and is treated as a workaround.

© Patrick Stox LLC · CC BY 4.0 ·

  • İstemci tarafı oluşturma (CSR). Sunucu neredeyse boş bir kabuk gönderir; tarayıcı (veya WRS) her şeyi oluşturmak için JavaScript’i çalıştırır. Bu, “the most problematic one … full client-side rendering where all of the rendering happens in the browser.” (terjemahan) “en sorunlu olan … oluşturmanın tamamının tarayıcıda gerçekleştiği tam istemci tarafı oluşturma”dır. Çalışabilir, ancak her şeyi oluşturmanın başarılı olmasına bağlarsınız ve dizine eklenmesi en uzun seçenektir.
  • Sunucu tarafı oluşturma (SSR). Sunucu her istek için tam HTML’yi oluşturur. İçerik ham HTML’dedir, bu nedenle arama için düşük risklidir.
  • Statik site oluşturma (SSG) / önceden oluşturma. HTML dağıtım zamanında bir kez oluşturulur. En düşük risk — içerik ham HTML’dedir ve hızlıdır.
  • Hydration (izomorfik / evrensel). İlk boyamayı SSR veya SSG ile yapar, ardından etkileşim eklemek için tarayıcıda JavaScript ile “hydrate” edersiniz. Modern çerçevelerin çoğu bunu yapar ve içerik için düşük risklidir — yalnızca içeriği boşaltan veya değiştiren hydration uyuşmazlıklarına dikkat edin.
  • Artımlı statik yeniden oluşturma (ISR). Statik sayfalar bir programa göre veya isteğe bağlı olarak yeniden oluşturulur. SSG gibidir ama içerik daha günceldir — büyük kataloglar için iyidir.
  • Edge oluşturma. CDN uç düğümlerinde çalışan SSR — SSR kadar düşük risklidir ve küresel kitle için ilk bayta daha hızlı süre sağlar.
  • Streaming SSR. HTML hazır oldukça parçalara bölünerek tarayıcıya aktarılır. Düşük risklidir, ancak dizine eklenebilir içeriğin yalnızca geç veya ertelenmiş bir parçada mahsur kalmadığından emin olun.

JavaScript SEO rehberimden çıkaracağım sonuç şudur: “Any kind of SSR, static rendering, and prerendering setup is going to be fine for search engines. Gatsby, Next, Nuxt, etc., are all great.” (terjemahan) “Her tür SSR, statik oluşturma ve önceden oluşturma kurulumu arama motorları için uygun olacaktır. Gatsby, Next, Nuxt vb. hepsi harikadır.” Gönderdiğiniz oluşturma modu, kullandığınız çerçeveden daha önemlidir — aynı Next.js uygulaması SSR/SSG veya tam CSR sunmanıza bağlı olarak güvenli ya da riskli olabilir.

Dinamik oluşturma — strateji değil, geçici çözüm

Dinamik oluşturma, botları algılayıp onlara önceden oluşturulmuş, JavaScript içermeyen bir sürüm sunarken kullanıcılara istemci tarafı sürümü sunmak demektir. Google artık açık konuşuyor: “Dynamic rendering was a workaround and not a long-term solution for problems with JavaScript-generated content in search engines,” (terjemahan) “Dinamik oluşturma, arama motorlarındaki JavaScript ile oluşturulan içerik sorunları için bir geçici çözümdü ve uzun vadeli bir çözüm değildi” ve “Dynamic rendering is a workaround and not a recommended solution, because it creates additional complexities and resource requirements.” (terjemahan) “Dinamik oluşturma bir geçici çözümdür ve ek karmaşıklıklar ile kaynak gereksinimleri yarattığı için önerilen bir çözüm değildir.” Evidence for this claim Google describes dynamic rendering as a workaround and does not recommend it as a long-term solution. Scope: Google Search guidance for JavaScript-generated content; server-side rendering, static rendering, or hydration are the recommended alternatives. Confidence: high · Verified: Google Search Central: Dynamic rendering as a workaround Katılıyorum ve her zaman katıldım — açıkçası bunu hiç önermedim; Google’ın artık buna karşı çıkmasına da sevindim. Botlara ve kullanıcılara farklı içerik sunmak gizlemeye tehlikeli biçimde yakındır. Bunun yerine SSR, statik oluşturma veya hydration’a başvurun.

Bir ayrıntı var: Bing hâlâ dinamik oluşturmayı öneriyor. Microsoft, “bingbot is generally able to render JavaScript” (terjemahan) “bingbot genel olarak JavaScript oluşturabilir” diyor, ancak bunu ölçekte yapmanın zor olduğunu belirterek “we recommend dynamic rendering as a great alternative for websites relying heavily on JavaScript.” (terjemahan) “JavaScript’e ağır biçimde dayanan web siteleri için dinamik oluşturmayı harika bir alternatif olarak öneriyoruz.” Pratik sonuç: SSR/SSG her iki motoru da memnun eder ve tartışmanın tamamını atlatır.

Bunun içeriğiniz için anlamı

Rendering decides whether Google ever sees your JavaScript content — but seeing it is only half the job. Once the page is rendered, the practical concerns are real <a href> links, field-specific parity between raw and rendered HTML, robots-directive stage order, lazy content, infinite scroll, and soft-404s. Those all live on the JavaScript SEO page, with the testing workflow (URL Inspection’s rendered HTML, screenshot, and console).

Bu, arama akışının oluşturma aşamasıdır. Etrafındaki aşamalar için sayfaların nasıl getirildiğini anlatan tarama ve oluşturulmuş sayfaya sonra ne olduğunu anlatan dizine ekleme sayfalarına veya tüm yolculuk için How Search Works hub’ına bakın.

One audit rule is worth keeping here: rendered is a state, not a universal winner. For body content and crawlable links, the rendered DOM shows what successful JavaScript added or removed. For titles and descriptions, it shows additional inputs, while Google may still generate a title link or snippet from other sources. For robots directives, a raw noindex may prevent rendering, so JavaScript removal is asymmetric. For canonical, Google advises using one source or one JavaScript-set value rather than changing an existing value. And JavaScript cannot change the HTTP response status already received. Keep those columns separate in evidence and use Google’s current JavaScript SEO guidance for the field-specific behavior.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.