Kritik Oluşturma Yolu
Tarayıcının baytlardan görünür piksellere uzanan adım adım işlem hattı — DOM, CSSOM, render ağacı, düzen ve boyama — CSS ile JavaScript'in oluşturmayı neden engellediği, üç optimizasyon aracı ve bu yolun FCP, LCP ve Googlebot oluşturma sürecini nasıl etkilediği. Oluşturmayı engelleyen kaynakların merkezi.
Diller
Kritik oluşturma yolu (CRP), tarayıcının ilk pikseli boyayabilmeden önce bağımlılık sırasına göre yaptığı çalışmadır: HTML'yi DOM olarak ayrıştırır, CSS'yi CSSOM olarak ayrıştırır, ikisini bir render ağacında birleştirir, düzeni hesaplar ve ardından boyama yapar. Bu, katı ve tek seferlik bir zamanlama değil, yararlı bir zihinsel modeldir. İki unsur yolu farklı biçimlerde engeller: CSS, geçerli olduğunda boyamayı engeller (CSSOM oluşturulana kadar tarayıcı oluşturma yapmaz); senkron JavaScript ise DOM ayrıştırmasını engeller (ayrıştırıcı her betikte tamamen durur). CRP'yi optimize etmek üç değişkeni en aza indirmek anlamına gelir: kritik kaynakların sayısı, kritik yol uzunluğu (ağ gidiş-dönüşleri) ve kritik baytlar. FCP, CRP'nin tamamlanmasını izleyen bir kilometre taşıdır, ancak tek başına tam bir teşhis değildir; uzun bir CRP, LCP'yi de geciktirebilir ve her ikisi de Core Web Vitals açısından önem taşır. Bu yol Googlebot için de önemlidir: Web Rendering Service, durum bilgisi tutmayan ve soğuk önbellekle çalışan başsız Chromium kullanır. Bu nedenle engelleyici kaynaklar, gerçek bir tarayıcıya benzer biçimde onun oluşturma sürecini de yavaşlatır; ancak kullanıcılarla tam eşdeğerlik ve sıralama etkisi yalnızca bundan kanıtlanamaz. Kritik CSS/JS robots.txt içinde engellenmemelidir. Bu merkez, işlem hattını açıklar ve oluşturmayı engelleyen kaynaklara yönlendirir.
TL;DR — Kritik oluşturma yolu, tarayıcının ekranda herhangi bir şey gösterebilmeden önce tamamlaması gereken adımların listesidir: HTML’yi ve CSS’yi okumak, neyin nereye yerleşeceğini belirlemek ve pikselleri boyamak. Bunun gerçekleşebilmesi için bazı dosyaların (stil sayfaları ve betikler) önceden yüklenmesi gerekir; bunlar “render-blocking” kaynaklardır. PageSpeed Insights’ta “Eliminate render-blocking resources” uyarısını gördüyseniz kastedilen budur.
Kritik oluşturma yolu nedir?
Bir sayfayı açtığınızda tarayıcı, indirdiği dosyayı doğrudan görüntülemekle yetinmez. Önce sayfayı şu sırayla oluşturması gerekir:
- HTML’yi okur ve sayfadaki her şeyin haritası olan DOM adlı yapıya dönüştürür.
- CSS’yi okur ve her şeyin nasıl görünmesi gerektiğini gösteren CSSOM adlı yapıya dönüştürür.
- Bu ikisini birleştirerek yalnızca gerçekten görünür öğeleri içeren bir render tree oluşturur.
- Layout — her öğenin tam olarak nereye yerleşeceğini ve ne büyüklükte olacağını hesaplar.
- Paint — son olarak ekrandaki pikselleri çizer. Evidence for this claim The browser constructs the DOM and CSSOM, combines them into a render tree, performs layout, and paints pixels. Scope: web.dev explanation of the browser's critical rendering path. Confidence: high · Verified: web.dev: Constructing the object model
Kritik oluşturma yolu, tarayıcının ilk pikseli boyayabilmeden önce bu çalışmaların tamamlaması gereken bölümüdür. Tarayıcı bu yolu ne kadar hızlı tamamlarsa sayfa o kadar hızlı görünür.
”Render-blocking” ne anlama gelir?
Bazı dosyalar bu sürecin tamamını yavaşlatır:
- CSS boyamayı engeller. Tarayıcı, engelleyici stil sayfalarının tamamını okuyana kadar hiçbir şey çizmez; aksi takdirde sayfa kısa süreliğine stilsiz görünür.
- JavaScript, HTML’nin okunmasını engeller. Tarayıcı normal bir
<script>etiketiyle karşılaştığında sayfayı oluşturmayı durdurur, betiği çalıştırır ve ancak bundan sonra devam eder. Evidence for this claim CSS is render-blocking by default, while parser-blocking scripts stop DOM construction until execution completes. Scope: Default stylesheet and synchronous script behavior in the critical rendering path. Confidence: high · Verified: web.dev: Render-blocking CSS web.dev: Adding interactivity with JavaScript
Bu nedenle <head> içindeki birkaç ağır stil sayfası ve betik, sayfanın geri kalanı çok küçük olsa bile sayfanın tamamını geciktirebilir.
Neden önemsemelisiniz?
Tarayıcının ilk içeriği boyadığı an First Contentful Paint (FCP) adlı metrikle ölçülür; bunun başlıca görünümü ise en büyük görünür öğeniz olan Largest Contentful Paint (LCP) metriğidir. LCP, Google’ın sıralamaları etkileyebilen Core Web Vitals metriklerinden biridir. Dolayısıyla yavaş bir kritik oluşturma yolu, ziyaretçileri rahatsız etmekle kalmaz; arama performansında fark ettirmeden kayba da yol açabilir.
İyi haber şu: “tarayıcıyı düzeltmeniz” gerekmez. Başlangıçta daha az kaynak yükleyerek, bunları küçülterek ve zorunlu olmayan betiklerle stillerin ilk boyamayı engellemesini önleyerek yolu kısaltabilirsiniz.
Gerçek sürümü; beş adımlı işlem hattının ayrıntılarını, CSS engellemesinin JavaScript engellemesinden nasıl ayrıldığını, üç optimizasyon aracını ve Googlebot’un nasıl etkilendiğini mi istiyorsunuz? Advanced sekmesine geçin.
TL;DR — Kritik oluşturma yolu, tarayıcının baytlardan ilk boyamaya uzanan işlem hattıdır: HTML → DOM, CSS → CSSOM, DOM + CSSOM → render tree → layout → paint. Birbirinden farklı iki engel vardır: CSS oluşturmayı engeller (CSSOM oluşturulana kadar boyama yapılmaz), senkron JavaScript ise DOM oluşturmayı engeller (ayrıştırıcı her betikte durur). Üç değişkeni en aza indirerek optimize edin: kritik kaynaklar, kritik yol uzunluğu (gidiş-dönüşler) ve kritik baytlar. FCP, CRP’nin tamamlanmasını izler (tam bir teşhis değil, bir kilometre taşıdır); TTFB ile FCP arasındaki büyük fark, oluşturmayı engelleyen varlıklara işaret eder ve uzun bir CRP, LCP’yi de geciktirebilir. Googlebot’un Web Rendering Service hizmeti, durum bilgisi tutmayan ve fiilen soğuk önbellekle çalışan başsız Chromium kullanır. Bu nedenle engelleyici kaynaklar, gerçek bir tarayıcıyı yavaşlattıkları gibi onun oluşturma sürecini de yavaşlatır; kritik CSS/JS de
robots.txtiçinde engellenmemelidir. Kullanılabilecek araçlar: kritik CSS’yi satır içine alma, kritik olmayan CSS’yi medya sorgularıyla eşzamansız yükleme, JS içindefervepreload(yalnızca kritik yolda bulunduğunu doğruladığınız kaynaklar için).
Beş adımlı işlem hattı (baytlardan piksellere)
Statik HTML sayfasından ağır bir JS uygulamasına kadar her sayfa, bağımlılık sırasına göre aynı açıklayıcı modelden geçer: Her adım kendinden öncekine bağlıdır. Ancak tarayıcılar bunu kelimenin tam anlamıyla beş katı ve tek seferlik aşama olarak çalıştırmaz. Baytlar geldikçe HTML aşamalı biçimde ayrıştırılıp oluşturulur; motorlar yeni HTML, CSS veya DOM değişiklikleri geldikçe bu çalışmaların bazı bölümlerini işlem hattına alabilir, örtüştürebilir ya da yeniden çalıştırabilir. Bu modeli, garanti edilmiş evrensel bir motor zamanlaması olarak değil, bağımlılıkları anlamaya yarayan zihinsel bir model olarak değerlendirin.
1. HTML → DOM. web.dev, nesne modeli oluşturma sürecini “Bytes → characters → tokens → nodes → object model.” şeklinde açıklar. Tarayıcı “reads the raw bytes of HTML off the disk or network, and translates them to individual characters,” ardından bunları belirteçlere ayırır, belirteçleri nesnelere dönüştürür ve bir ağaçta birbirine bağlar. “The final output of this entire process is the Document Object Model (DOM) of our simple page, which the browser uses for all further processing.”
2. CSS → CSSOM. CSS tamamen aynı yolu izler: “The CSS bytes are converted into characters, then tokens, then nodes, and finally they are linked into a tree structure known as the ‘CSS Object Model’ (CSSOM).” En önemlisi, “The CSSOM and DOM are independent data structures”; bunlar paralel olarak oluşturulan iki ayrı ağaçtır.
3. DOM + CSSOM → render tree. “The DOM and CSSOM trees combine to form the render tree,” ve bu ağaç “captures all the visible DOM content on the page.” display: none ile visibility: hidden arasındaki fark da burada önem kazanır: display: none, öğeyi render tree’den tamamen kaldırır; visibility: hidden ise öğeyi ağaçta tutar (öğe layout içinde hâlâ yer kaplar) fakat hiçbir şey çizmez.
4. Layout. “Layout computes the exact position and size of each object.” Bunun çıktısı, “a ‘box model,’ which precisely captures the exact position and size of each element within the viewport.”
5. Paint. “The last step is paint, which takes in the final render tree and renders the pixels to the screen.”
6. Composite ve display. Boyanmış katmanlar birleştirilir (composited) ve sonuç ekrana çizilir; pikselleri gerçekten görünür kılan adım budur. Bazı CSS özellikleri (transform ve opacity gibi), layout veya paint işlemleri tekrarlanmadan yalnızca bu adımı yeniden çalıştırabilir. Bu nedenle bunları canlandırmak daha düşük maliyetlidir. Evidence for this claim The browser constructs the DOM and CSSOM, combines them into a render tree, performs layout, and paints pixels. Scope: web.dev explanation of the browser's critical rendering path. Confidence: high · Verified: web.dev: Constructing the object model
Kritik oluşturma yolu, bu işlem hattının ilk boyamadan önce tamamlanması gereken bölümüdür. web.dev’in ifadesiyle bunu optimize etmek, “all about understanding what happens in these intermediate steps between receiving the HTML, CSS, and JavaScript bytes and the required processing to turn them into rendered pixels.”
İki tür engelleme, iki farklı mekanizma
Çoğu SEO yazısının bulanıklaştırdığı bu ayrımın tam olarak doğru anlaşılması önemlidir.
CSS, geçerli olduğunda oluşturmayı (boyamayı) engeller. “By default, CSS is treated as a render-blocking resource, which means that the browser won’t render any processed content until the CSSOM is constructed.” Hem HTML hem de CSS oluşturmayı engeller; tarayıcı, hem DOM’ye hem de CSSOM’ye sahip olana kadar oluşturmayı bekletir. Bu durum, mevcut ortamda gerçekten geçerli olan stil sayfaları için geçerlidir. media koşulu eşleşmeyen bir <link> (örneğin normal ekran ziyaretinde media="print") oluşturmayı engellemez; ancak tarayıcı dosyayı yine de indirir. Geçerlilik yükleme anında sabitlenmez: İlk oluşturmayı engellemeyen bir stil sayfası, medya koşulu, viewport veya DOM değiştiğinde daha sonra uygulanmaya başlayabilir ve yeni bir style/layout/paint turunu tetikleyebilir. Dolayısıyla <head> içindeki tek bir yavaş ve geçerli stil sayfası bile ilk boyamanın tamamını rehin alır. İnsanların unuttuğu nokta budur: Betiklere takılıp CSS’yi göz ardı ederler.
JavaScript, DOM oluşturmayı (ayrıştırmayı) engeller. Google’ın PageSpeed belgelerine göre “whenever the parser encounters a script it has to stop and execute it before it can continue parsing the HTML,” ve “in the case of an external script the parser is also forced to wait for the resource to download.” Sonuç olarak “By default JavaScript blocks DOM construction and thus delays the time to first render.” Bununla birlikte, ayrıştırıcının durması ağın boşta kaldığı anlamına gelmez. Tarayıcılar, ana ayrıştırıcı bir betikte takılıyken yaklaşan kaynakları (görseller, diğer betikler ve stil sayfaları) keşfedip getirmeyi sürdüren ikincil bir preload tarayıcısı çalıştırır. Engeli gidermek için async/defer kullanılır; ancak async yalnızca indirme engelini kaldırır. Betik geldiğinde yine ana iş parçacığında çalışır. Bu nedenle ayrıştırmanın bitmesini bekleyen ve sırayı koruyan defer, CRP açısından genellikle daha güvenlidir. Evidence for this claim CSS is render-blocking by default, while parser-blocking scripts stop DOM construction until execution completes. Scope: Default stylesheet and synchronous script behavior in the critical rendering path. Confidence: high · Verified: web.dev: Render-blocking CSS web.dev: Adding interactivity with JavaScript
Üç optimizasyon aracı
web.dev, CRP optimizasyonunu üç değişkenin en aza indirilmesi olarak çerçeveler: “To deliver the fastest possible time to first render, we need to minimize three variables: The number of critical resources. The critical path length. The number of critical bytes.” “A critical resource is a resource that could block initial rendering of the page.”
- Kritik kaynakların sayısını azaltın — bunları ortadan kaldırın, indirmelerini erteleyin veya eşzamansız olarak işaretleyin. İlk boyamadan önce tamamlanması zorunlu olan daha az kaynak bırakın.
- Kritik yol uzunluğunu azaltın — bu uzunluk “a function of the dependency graph between the critical resources.” Zinciri getirmek için gereken ağ gidiş-dönüşlerini azaltın.
- Kritik baytları azaltın — “the fewer critical bytes the browser has to download, the faster it can process content.” Küçültün, sıkıştırın ve bölün.
Pratikte bunun anlamı şudur: Kritik (ekranın üst kısmındaki) CSS’yi <head> içinde satır içine alın ve tam stil sayfasını eşzamansız yükleyin; kritik olmayan CSS’nin kapsamını medya sorgularıyla belirleyin (<link rel="stylesheet" media="print"> indirilir ancak boyamayı engellemez); zorunlu olmayan JavaScript için defer kullanın ve gerekeceğini bildiğiniz kaynakları preload edin. Bu, Ahrefs LCP rehberimde verdiğim LCP tavsiyesinin aynısıdır: “you want to rearrange the order in which the resources are downloaded and processed”. Kritik CSS’yi satır içine almak da “takes the part of the CSS needed to load the content users see immediately and then applies it directly into the HTML.” Buna yalnızca “kritik oluşturma yolu” adını vermemiştim; altta yatan mekanizma budur.
preload ile fetchpriority farklı işler yapar; ikisini birbirine karıştırmayın. preload, bir kaynağı normalde keşfedileceği zamandan önce getirmeye zorlar. Bu, HTML ayrıştırıcısının önceden göremediği, CSS veya JavaScript içinde gizli kaynaklar için yararlıdır. fetchpriority hiçbir şeyi getirmez; yalnızca tarayıcının zaten yapacağı bir isteğin öncelik ipucunu değiştirir. Hiçbiri bedelsiz değildir: Yanlış URL, as türü veya kimlik bilgisi moduyla kullanılan bir preload boşa gidebilir ya da tarayıcının zaten yapacağı isteği yineleyebilir. Çok fazla kaynağı yüksek öncelikli işaretlemek de sıralama avantajını ortadan kaldırır; tarayıcı, CDN ve protokol davranışları gerçek faydayı etkiler. preload özelliğini yalnızca waterfall ile test ettiğiniz sayfanın kritik yolunda bulunduğunu doğruladığınız bir kaynak için kullanın ve kazanç varsaymak yerine önceki ve sonraki durumu başka bir trace ile doğrulayın.
Core Web Vitals bağlantısı (SEO açısından)
CRP’nin yalnızca geliştiricileri ilgilendirmemesinin nedeni budur.
- FCP, CRP’nin tamamlanmasını izler; ancak tam bir teşhis değil, bir kilometre taşıdır. First Contentful Paint, tarayıcı ilk içeriği boyadığında tetiklenir. Bu nedenle uzun bir kritik oluşturma yolu genellikle geç FCP olarak görünür. Ancak FCP yalnızca gözlemlenen bir boyama olayıdır; gecikmeye işlem hattının hangi aşamasının yol açtığını tek başına göstermez ve hızlı FCP, her bağımlılığın sorunsuz tamamlandığını garanti etmez. Geç FCP’yi yoldaki bir şeyin yavaş olduğuna dair sinyal olarak değerlendirin, ardından ne olduğunu trace ile bulun.
- LCP gecikmeyi devralabilir. Abby Hamilton (Dentsu) bunu iyi ifade ediyor: “Optimizing the critical rendering path will typically have the largest impact on Largest Contentful Paint (LCP) since it’s specifically focused on how long it takes for pixels to appear on the screen.” web.dev şu teşhis ipucunu verir: “A large delta between TTFB and FCP could indicate that the browser needs to download a lot of render-blocking assets.” Bu fark, temel neden tespiti değil, CRP için bir ön kontroldür. Bir şeyi düzeltmeden önce waterfall veya trace ile doğrulayın.
- TBT/INP, JavaScript’in etkisini hisseder. Kritik yoldaki betikler ana iş parçacığı için yarışır; boyamadan sonraki uzun görevler etkileşimi olumsuz etkiler.
Hem LCP hem de FCP, tarayıcının yolu ne kadar hızlı tamamladığından etkilenir. LCP, Google’ın sıralama sinyali olarak kullandığı bir Core Web Vital’dır; tarayıcı iç işleyişiyle arama arasındaki bağlantı budur. Bununla birlikte saha sonuçları ve belirli sıralama etkileri yalnızca hızlı bir laboratuvar trace’iyle değil, kendi kanıtlarıyla (CrUX/Search Console verileri) değerlendirilmelidir.
Googlebot nasıl etkilenir?
Google’ın Web Rendering Service (WRS) hizmeti, insanların kafasını karıştıran bölümdür. Google “processes JavaScript web apps in three main phases: Crawling, Rendering, Indexing,” ve “Once Google’s resources allow, a headless Chromium renders the page and executes the JavaScript”; bunun için “an evergreen version of Chromium.” kullanır. Gerçek Chrome ile aynı oluşturma motorudur. Bu nedenle engelleyici kaynaklar, gerçek bir tarayıcıyı yavaşlattıkları gibi Googlebot’un oluşturma sürecini de yavaşlatır. Bu, ortak mimariden çıkarılan makul bir sonuçtur; her gecikmenin Googlebot’u her kullanıcıyla tamamen aynı biçimde etkilediği veya doğrudan dizine ekleme ya da sıralama cezasına dönüştüğü iddiası değildir. Google bu düzeyde bir eşdeğerlik yayımlamamıştır ve belirli bir sayfa için doğrulama yalnızca CRP denetimiyle değil, Search Console / dizine ekleme kanıtlarıyla yapılmalıdır.
İçselleştirilmesi gereken üç sonuç:
- Oluşturma kuyruğu gecikme ekler. Sayfalar oluşturma kuyruğunda “a few seconds, but it can take longer than that” bekler. Yavaş bir CRP bu gecikmeyi büyütür.
- WRS durum bilgisi tutmaz ve fiilen soğuk önbellekle çalışır. JavaScript SEO rehberimde belirttiğim gibi, “Google loads each page stateless like it’s a fresh load.” Google’ın kendi belgeleri de WRS’nin sayfa yüklemeleri arasında durum saklamadığını ve “may ignore caching headers,” olduğunu doğrular; bu durum “may lead WRS to use outdated JavaScript or CSS resources.” Dolayısıyla ağır bir kritik yolu sıcak önbellekle gizleyemezsiniz; her oluşturma esasen ilk ziyaret gibidir. (Bu, “Google kaynakları önbelleğe alır, dolayısıyla CRP yalnızca ilk ziyarette önemlidir” efsanesini de çürütür.)
- Kritik kaynakları robots.txt içinde engellemeyin. WRS’nin doğru oluşturma yapabilmesi için CSS ve JS’nize erişmesi gerekir. JavaScript SEO rehberimde ifade ettiğim gibi: “Don’t block access to resources if they are needed to build part of the page or add to the content.” Bunları engellerseniz oluşturmayı tamamen bozabilirsiniz; Google bozuk bir sayfa görür.
Bing’in eşdeğer bir “critical rendering path” belge dizisi yoktur; ancak bu ilke tarayıcı tabanlı tüm tarayıcı botları için evrenseldir. Bingbot’un JS oluşturma bütçesi Google’ınkinden daha kısıtlıdır; dolayısıyla yalın bir kritik yol, Bing’in keşif sürecinde daha fazla önem taşır, daha az değil.
Bir uç durum: Erken boyama, içeriğinizin hazır olduğunu kanıtlamaz
CRP modeli ekrana bir şey getirilmesini açıklar; bu şeyin gerçek içeriğiniz olacağını garanti etmez. İstemci tarafında oluşturulan uygulamalar çoğu zaman bir kabuğu (iskelet, yükleme durumu veya boş düzen) hızla boyayıp FCP’yi karşılar. Okurların ve Googlebot’un gerçekten önemsediği içerik ise bir JavaScript paketinin indirilmesini, çalıştırılmasını ve veri getirmesini hâlâ bekliyor olabilir. Böyle bir sayfadaki hızlı FCP yanıltıcı bir sinyaldir: Kritik oluşturma yolu içerik için değil, kabuk için tamamlanmıştır.
Sunucu tarafında oluşturulan veya statik olarak üretilen HTML, anlamlı içerik daha sonra eklenmek yerine başlangıç işaretlemesinde zaten bulunduğundan bu sorunu büyük ölçüde önler. JS ağırlıklı bir sayfayı denetliyorsanız FCP’de durmayın: O zaman damgasında ekranda gerçekte neyin göründüğünü (filmstrip veya trace bunu gösterir) birincil içeriğin görünür olduğu anla karşılaştırın ve bunları iki ayrı soru olarak ele alın.
SEO uzmanları CRP ile gerçekte nerede karşılaşır?
En yaygın temas noktası, PageSpeed Insights / Lighthouse içindeki “Eliminate render-blocking resources” denetimidir. Abby Hamilton iş akışını şöyle açıklar: “navigate to ‘Eliminate render-blocking resources’ under ‘Diagnostics,’ and expand the content to see a list of first-party and third-party resources blocking the first paint.” WebPageTest’te waterfall’u inceleyerek “Start Render” çizgisinden önce yüklenenleri bulun. Chrome DevTools’taki Coverage sekmesi ise erteleyebileceğiniz kullanılmayan CSS/JS’yi gösterir. Tek bir trace konusunda dikkatli olun: Üçüncü taraf bağlantı kurulumu, onaya bağlı betikler, service worker veya sıcak ve soğuk önbellek farkı, çalıştırmalar arasında neyin ne zaman keşfedildiğini değiştirebilir. Tek bir laboratuvar çalıştırması, her ziyaretçinin göreceklerinin garantisi değil, bir örnektir.
İlgili konular — sırada ne var?
Bu sayfa, oluşturmayı engelleyen kaynaklarla ilgili çalışmaların merkezidir. Ayrıntılı inceleme bunun altında yer alır:
- Oluşturmayı engelleyen kaynaklar — bu sayfanın pratik ve denetim odaklı tamamlayıcısıdır: PageSpeed Insights, Lighthouse ve WebPageTest’te engelleyici CSS ile JavaScript’i tam olarak nasıl bulacağınızı;
asynciledeferarasındaki ayrıntılı farkı; kritik CSS’yi satır içine almayı; stil sayfalarının kapsamını medya sorgularıyla belirlemeyi ve “Eliminate render-blocking resources” uyarısını adım adım gidermeyi açıklar.
Bu yolun etkilediği metrikler için Core Web Vitals, Largest Contentful Paint (LCP) ve First Contentful Paint (FCP) sayfalarına bakın. Googlebot’un oluşturma adımının daha büyük işlem hattında nasıl çalıştığını öğrenmek için JavaScript SEO ve Arama Nasıl Çalışır? konu kümesine bakın.
Yapay zekâ özeti
Advanced sürümün kısa özeti:
- CRP katı bir zamanlama değil, bağımlılık modelidir: HTML → DOM, CSS → CSSOM, DOM + CSSOM → render tree → layout → paint → composite/display. Yararlı bir zihinsel modeldir; tarayıcılar HTML’yi aşamalı olarak işler ve bu çalışmaların bölümlerini işlem hattına alabilir, örtüştürebilir veya yeniden çalıştırabilir.
- İki ayrı ve koşullu engel vardır: Gerçekten geçerli olduğunda CSS oluşturmayı engeller (medya koşulu eşleşmeyen stil sayfaları engellemez ancak koşullar değişirse daha sonra uygulanabilir); senkron JavaScript ise DOM oluşturmayı engeller (ayrıştırıcı her betikte durur, fakat preload tarayıcısı bu sırada diğer kaynakları getirmeyi sürdürür). Yol açısından
defergenellikleasyncseçeneğinden daha güvenlidir. - Üç optimizasyon aracı: Kritik kaynakların sayısını, kritik yol uzunluğunu (bağımlılık grafiğindeki ağ gidiş-dönüşleri) ve kritik baytları en aza indirin. Taktikler: Kritik CSS’yi satır içine alma, kritik olmayan CSS’yi medya sorgularıyla eşzamansız yükleme, JS için
defervepreload; ancak yalnızca waterfall ile kritik olduğu doğrulanan kaynaklarıpreloadedin.preloadilefetchpriorityfarklı araçlardır (erken getirme ve öncelik ipucu) ve yanlış kullanım bant genişliğini boşa harcar. - Core Web Vitals bağlantısı: FCP, CRP’nin tamamlanmasını izler; ancak temel neden teşhisi değil, bir kilometre taşıdır. Büyük bir TTFB-to-FCP farkı, oluşturmayı engelleyen varlıklar için ön kontrol işaretidir; uzun CRP, LCP’yi de geciktirebilir. Yoldaki JS ayrıca ana iş parçacığına yük bindirir (TBT/INP). LCP bir sıralama sinyalidir ancak saha sonuçları kendi kanıtlarını gerektirir.
- Googlebot: Web Rendering Service, durum bilgisi tutmayan, evergreen ve fiilen soğuk önbellekle çalışan başsız Chromium kullanır. Dolayısıyla engelleyici kaynaklar, gerçek tarayıcıyı yavaşlattıkları gibi onun oluşturmasını da yavaşlatır. Bununla birlikte kullanıcılarla tam eşdeğerlik ve dizine ekleme/sıralama etkileri yalnızca bundan kanıtlanamaz; oluşturma kuyruğu gecikme ekler, WRS önbellek başlıklarını yok sayabilir ve kritik CSS/JS robots.txt içinde engellenmemelidir.
- Uç durum: İstemci tarafında oluşturulan uygulamalarda yaygın olan erken kabuk boyaması, gerçek içerik hazır olmadan FCP’yi karşılayabilir. Yalnızca ilk pikselin ne zaman göründüğüne değil, ekranda gerçekte ne bulunduğuna bakın.
- Karşılaşacağınız yer: PageSpeed Insights’taki “Eliminate render-blocking resources” denetimi. WebPageTest waterfall’undaki “Start Render” çizgisini veya DevTools Coverage sekmesini inceleyin. Üçüncü taraf/onay/service worker/önbellek davranışı çalıştırmadan çalıştırmaya değiştiği için tek bir trace’i garanti değil, örnek olarak değerlendirin.
Resmî belgeler
Oluşturma işlem hattı ve oluşturmayı engelleyen kaynaklar hakkında birincil kaynak belgeleri.
Google / web.dev
- Critical rendering path (overview) — kavramı ve optimizasyonun ilk oluşturmaya kadar geçen süreyi neden iyileştirdiğini açıklar.
- Constructing the Object Model — DOM ve CSSOM oluşturma süreci (bytes → characters → tokens → nodes → object model).
- Render-tree Construction, Layout, and Paint — DOM + CSSOM’nin birleştirilmesi, box model ve
display:noneilevisibility:hiddenarasındaki fark. - Render-Blocking CSS — CSS’nin oluşturmayı neden engellediği ve medya sorgularının bazı CSS kaynaklarını nasıl engelleyici olmaktan çıkardığı.
- Remove Render-Blocking JavaScript — ayrıştırıcının betiklerde nasıl durduğu ve
async/defer. - Optimizing the Critical Rendering Path — üç değişken: kritik kaynaklar, yol uzunluğu ve baytlar.
- Optimize Largest Contentful Paint — TTFB-to-FCP farkı ve oluşturmayı engellemenin LCP üzerindeki etkisi.
Google Search Central — Googlebot / WRS
- Understand JavaScript SEO basics — tarama → oluşturma → dizine ekleme, oluşturma kuyruğu ve evergreen başsız Chromium.
- Fix Search-Related JavaScript problems — WRS’nin kaynak getirmesi, durum bilgisi tutmayan oluşturma ve önbellek davranışı.
Bing / Microsoft
- Bing’e özgü bir “critical rendering path” belgesi yoktur. Bing Webmaster yönergeleri, JavaScript’in sınırlı tutulmasını ve kritik içeriğin başlangıç HTML’sinde bulunmasını önerir; Google’ınkinden daha dar bir oluşturma bütçesiyle aynı ilke geçerlidir.
Kaynaktan alıntılar
Google/web.dev ve adı belirtilen sektör uzmanlarının kayda geçmiş açıklamaları. Her bağlantı, kaynak sayfadaki alıntılanan bölüme doğrudan gider.
web.dev — işlem hattı
- “Bytes → characters → tokens → nodes → object model.” Alıntıya git
- “The CSS bytes are converted into characters, then tokens, then nodes, and finally they are linked into a tree structure known as the ‘CSS Object Model’ (CSSOM).” Alıntıya git
- “The CSSOM and DOM are independent data structures!” Alıntıya git
- “The DOM and CSSOM trees combine to form the render tree.” Alıntıya git
- “The output of the layout process is a ‘box model,’ which precisely captures the exact position and size of each element within the viewport.” Alıntıya git
web.dev / Google — oluşturmayı engelleme
- “By default, CSS is treated as a render-blocking resource, which means that the browser won’t render any processed content until the CSSOM is constructed.” Alıntıya git
- “Both HTML and CSS are render-blocking resources.” Alıntıya git
- “Media types and media queries allow us to mark some CSS resources as non-render blocking.” Alıntıya git
- “whenever the parser encounters a script it has to stop and execute it before it can continue parsing the HTML.” — Google PageSpeed Insights belgeleri. Alıntıya git
- “By default JavaScript blocks DOM construction and thus delays the time to first render.” Alıntıya git
web.dev — üç değişken
- “A critical resource is a resource that could block initial rendering of the page.” Alıntıya git
- “To deliver the fastest possible time to first render, we need to minimize three variables: The number of critical resources. The critical path length. The number of critical bytes.” Alıntıya git
- “A large delta between TTFB and FCP could indicate that the browser needs to download a lot of render-blocking assets.” — web.dev, Optimize LCP. Alıntıya git
Google Search Central — Googlebot / WRS
- “a headless Chromium renders the page and executes the JavaScript.” Alıntıya git
- “Googlebot and its Web Rendering Service (WRS) component continuously analyze and identify resources that don’t contribute to essential page content and may not fetch such resources.” Alıntıya git
Abby Hamilton, Dentsu SEO Direktörü (Search Engine Journal aracılığıyla)
- “Optimizing the critical rendering path will typically have the largest impact on Largest Contentful Paint (LCP) since it’s specifically focused on how long it takes for pixels to appear on the screen.” Alıntıya git
Kritik oluşturma yolu denetimi — kontrol listesi
Tarayıcının (ve Googlebot’un) ekranın üst kısmındaki içeriğinizi hızla boyayabildiğini doğrulamak için:
- URL’yi PageSpeed Insights / Lighthouse ile test edin ve Diagnostics altındaki “Eliminate render-blocking resources” bölümünü inceleyin.
- Kritik (ekranın üst kısmındaki) CSS,
<head>içinde satır içine alınmış; tam stil sayfası eşzamansız (engellemeden) yükleniyor. - Kritik olmayan stil sayfalarının kapsamı medya sorgularıyla (
media="print"vb.) belirlenmiş; böylece indirilseler de ilk boyamayı engellemiyorlar. -
<head>içinde ilk oluşturma için gerçekten gerekmeyen senkron<script>etiketi yok;defer(veya sıranın önemli olmadığı durumlardaasync) kullanılıyor. - Kritik baytlar en aza indirilmiş: CSS/JS küçültülmüş, metin sıkıştırılmış (Brotli/gzip), kritik yolda kullanılmayan CSS/JS gönderilmiyor (DevTools Coverage sekmesini kontrol edin).
- Kritik yol uzunluğu kısa tutulmuş: Bağımlılık zincirli gidiş-dönüşler azaltılmış, ilk boyama için gerektiği bilinen kaynaklar
preloadedilmiş. - WebPageTest içinde önemli hiçbir şey “Start Render” çizgisinden sonra yüklenmiyor.
- Hemen oluşturulması gereken ekranın üst kısmı / LCP öğeleri, onları render tree’den kaldıran
display:noneile gizlenmemiş. - CSS ve JS,
robots.txtiçinde engellenmiyor; WRS’nin oluşturma için bunları getirmesi gerekir. - Saha verilerindeki TTFB-to-FCP farkı kontrol edilmiş; büyük fark oluşturmayı engelleyen varlıklara işaret eder.
Zihinsel modeller
1. İşlem hattı sabit bir sıradır; yavaş adımı bulun. Bytes → DOM, CSS → CSSOM, render tree → layout → paint. Her adım kendinden öncekini bekler. İlk boyama geciktiğinde tahmin yürütmeyin; darboğazın hangi adımda olduğunu bulun (CSS mi bekleniyor, engelleyici bir betik mi var, DOM çok mu büyük?).
2. İki engel, iki mekanizma; doğru olanı düzeltin. CSS boyamayı engeller (CSSOM tamamlanana kadar oluşturma yapılmaz). JavaScript ayrıştırmayı engeller (ayrıştırıcı her senkron betikte durur). CSS sorununa JS sorunu gibi veya tersine yaklaşmak emeği boşa harcar. Hangi kapının kapalı olduğunu sorun.
3. Üç araç. Her CRP düzeltmesi şunlardan birini azaltır: kritik kaynakların sayısı, kritik yolun uzunluğu (gidiş-dönüşler) veya yoldaki baytlar. Bir değişiklik bu üçünden birini etkilemiyorsa CRP optimizasyonu değildir.
4. FCP, yolun skor tablosudur. First Contentful Paint, CRP’nin tamamlanmasıdır. Büyük TTFB-to-FCP farkı, nedenin oluşturmayı engelleyen varlıklar olduğunu gösteren teşhis işaretidir; başka bir şeye dokunmadan önce buradan başlayın.
5. Googlebot, durum bilgisi tutmayan ve soğuk bir tarayıcı gibi oluşturur.
WRS aynı motoru, sıcak önbellek ve saklanan durum olmadan kullanır. Bu nedenle kullanıcılar için yaptığınız gibi bot için de yolu optimize edin ve oluşturma için gereken CSS/JS’yi robots.txt içinde asla engellemeyin.
Kritik oluşturma yolu — kısa başvuru
Hangi kaynak neyi engeller?
| Kaynak | Engellediği işlem… | Varsayılan davranış | Engellemeyi kaldırma yöntemi |
|---|---|---|---|
| HTML | (girdinin kendisidir) | DOM olarak ayrıştırılır | — |
CSS (<link rel="stylesheet">) | Oluşturma / boyama | Oluşturmayı engeller | medya sorguları; kritik CSS’yi satır içine alma + geri kalanı eşzamansız yükleme |
Senkron <script> | DOM ayrıştırma | Ayrıştırıcıyı engeller | defer (tercih edilir) veya async |
Medya kapsamlı CSS (media="print") | Hiçbir şeyi | Engellemez, yine de indirilir | (zaten engellemez) |
async, defer ve senkron karşılaştırması
| İndirme… | Çalıştırma… | CRP açısından güvenli mi? | |
|---|---|---|---|
| (hiçbiri) | ayrıştırıcıyı engeller | hemen | Hayır |
async | paralel | indirilir indirilmez (ayrıştırmayı kesebilir) | Kısmen |
defer | paralel | HTML ayrıştırıldıktan sonra, sırayla | Evet |
Üç araç
| Araç | Hedef | Yöntem |
|---|---|---|
| Kritik kaynaklar | Daha az | kaldırma, erteleme, eşzamansız yükleme |
| Kritik yol uzunluğu | Daha az gidiş-dönüş | bağımlılık zincirlerini düzleştirme, preload |
| Kritik baytlar | Daha küçük | küçültme, sıkıştırma, kullanılmayan CSS/JS’yi kaldırma |
Kısa bilgiler
- FCP = CRP’nin tamamlanmasının ölçümü; büyük TTFB→FCP farkı = oluşturmayı engelleyen varlıklar.
display:none→ render tree’den kaldırılır;visibility:hidden→ ağaçta kalır ve layout’u yine hesaplanır.- WRS = durum bilgisi tutmayan, evergreen başsız Chromium; önbellek başlıklarını yok sayabilir.
- Kritik CSS/JS’yi robots.txt içinde asla engellemeyin; Google’ın oluşturmasını bozabilir.
Kritik oluşturma yolunu teşhis etme araçları
- PageSpeed Insights / Lighthouse — Diagnostics altındaki “Eliminate render-blocking resources” denetimi, ilk boyamayı geciktiren birinci ve üçüncü taraf CSS/JS kaynaklarını listeler. En yaygın başlangıç noktasıdır.
- Chrome DevTools — Performance paneli — yüklemeyi kaydedip DOM/CSSOM/layout/paint olaylarını izleyin; flame chart, ana iş parçacığının nerede engellendiğini gösterir.
- Chrome DevTools — Coverage sekmesi — kritik yoldan erteleyebileceğiniz veya kaldırabileceğiniz kullanılmayan CSS ve JavaScript’i gösterir.
- WebPageTest — waterfall’u ve “Start Render” çizgisini inceleyin; bundan önce yüklenen her şey kritik yoldadır. Filmstrip görünümü ilk boyamanın gerçekten ne zaman gerçekleştiğini gösterir.
- Google Search Console — URL Inspection (oluşturulmuş HTML / ekran görüntüsü) — engellenmiş veya yavaş kritik kaynakları yakalamak için WRS’nin gerçekte ne oluşturduğunu görün.
- CrUX / PageSpeed Insights saha verileri — gerçek kullanıcı FCP’sini ve üretimde oluşturmayı engelleyen kaynakları işaretleyen TTFB-to-FCP farkını gösterir.
Zaman ayırmaya değer kaynaklar
İlgili yazılarım
- JavaScript SEO Issues & Best Practices — oluşturma tarafı: WRS’nin durum bilgisi tutmayan yüklemesi, Google’ın ihtiyaç duyduğu kaynakların engellenmemesi ve varsayılan olarak DOM’da bulunması gereken içerik.
- Largest Contentful Paint (LCP) — kaynak yükleme sırasını değiştirme ve kritik CSS’yi satır içine alma; LCP terimleriyle açıklanan CRP optimizasyonları.
- The Beginner’s Guide to Technical SEO — oluşturma ve performansın büyük resimdeki yeri.
Konuşmalarım
- How Search Works (SlideShare) — tarama, oluşturma, dizine ekleme ve sıralama. (Standart sorumluluk reddim geçerlidir: “This is my understanding of systems… not going to be 100% complete or accurate.”)
Resmî kaynaklar
- web.dev’in critical-rendering-path serisi: overview, object model, render tree, render-blocking CSS ve optimizing the CRP.
- Remove Render-Blocking JavaScript (Google PageSpeed Insights).
Diğer kaynaklar
- Identify & Reduce Render-Blocking Resources (Search Engine Journal, Abby Hamilton / Dentsu) — CRP→LCP bağlantısı ve PageSpeed denetiminin okunması hakkında güçlü, uygulamaya dönük bir rehber.
- r/TechSEO — oluşturma ve Core Web Vitals hata ayıklaması topluluğu.
Önce hangi kritik yol darboğazını düzeltmelisiniz?
What delays the first useful paint?
Kritik oluşturma yolu hataları
Bağımlılıkları kontrol etmeden her betiği ertelemek
Çalıştırma sırasını değiştirmek, daha önce tanımlanan global değişkenleri veya ayrıştırılmış öğeleri bekleyen kodu bozabilir. Zamanlama değişikliğinden önce ve sonra bağımlılıkları haritalandırıp davranışı doğrulayın.
Stil sayfasının tamamını satır içine almak
Satır içine alma bir isteği ortadan kaldırır ancak her HTML yanıtını şişirebilir ve tekrar ziyaret önbelleğinin avantajını yok edebilir. Yalnızca ölçülmüş, küçük bir kritik kümeyi ve ödünleşimin gerekçelendirildiği durumlarda satır içine alın.
CSS veya JavaScript’i Googlebot için engellemek
Google’ın oluşturucusu, sayfayı oluşturan kaynaklara ihtiyaç duyar. Bu kaynakları gizleyen bir robots kuralı, Google’ın oluşturulmuş içeriği doğru görmesini engelleyebilir.
Yol uzunluğunu ölçmeden istek sayısını optimize etmek
Tek bir büyük kaynak her şeyi geciktiriyorsa daha az dosya otomatik olarak daha hızlı değildir. Kritik baytları, bağımlılık derinliğini ve varış zamanlamasını birlikte ölçün.
Kendinizi sınayın: Kritik Oluşturma Yolu
Tarayıcının baytları piksellere nasıl dönüştürdüğüne ilişkin beş kısa soru. Her biri için bir yanıt seçin, ardından kontrol edin.
Değişiklik günlüğü
9 Ağu 2026 tarihinde güncellendi.
Editoryal özet ve kaydedilen değişiklik ayrıntıları.Değişiklik ayrıntıları
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
Tam karşılaştırma kullanılamıyor — bu sürüm için önceki anlık görüntü arşivlenmemiş.
8 Ağu 2026 tarihinde güncellendi.
Editoryal özet ve kaydedilen değişiklik ayrıntıları.Değişiklik ayrıntıları
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
Tam karşılaştırma kullanılamıyor — bu sürüm için önceki anlık görüntü arşivlenmemiş.
17 Tem 2026 tarihinde güncellendi.
Editoryal özet ve kaydedilen değişiklik ayrıntıları.Değişiklik ayrıntıları
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
Tam karşılaştırma kullanılamıyor — bu sürüm için önceki anlık görüntü arşivlenmemiş.