Kritik CSS
Critical CSS — ekranın üst bölümündeki stilleri ayıklayıp satır içine alarak ve geri kalanını erteleyerek ilk boyamayı hızlandırma tekniği. Google'ın bunu neden gelişmiş ve isteğe bağlı gördüğü, gerçek ödünleşimler (önbellek kaybı, bakım riski, zamanlama yarışları) ve CSS'nin gerçekten darboğazınız olup olmadığını nasıl belirleyeceğiniz.
Diller
Critical CSS bir performans tekniğidir: seçilen ekran üstü görünümü oluşturmak için gereken CSS'yi ayıklar, <head> içine alır ve stil dosyasının geri kalanını asenkron olarak erteler. CSS varsayılan olarak oluşturmayı engellediği için çalışır; CSSOM kurulana kadar tarayıcı boyama yapmaz. Evrensel bir ekran üstü yüksekliği yoktur (cihaz, yön, yakınlaştırma ve sayfa durumu bunu değiştirir); bu nedenle ayrımı sabit bir piksel sınırı değil, bir karar olarak ele alın. En önemli nokta şudur: Google, Critical CSS'yi varsayılan bir tavsiye olarak değil, gelişmiş ve isteğe bağlı bir teknik olarak çerçeveler; kendi belgeleri çoğu sitenin bu tekniği uygulamadan hedeflerine ulaşabilmesi gerektiğini söyler. Ödünleşimler gerçektir: satır içi CSS tekrarlanan ziyaretlerde yeniden kullanılmak üzere önbelleğe alınmaz (ikinci görüntülemeler daha yavaş olabilir), kritik/kritik olmayan ayrım şablonlar veya durumlar değiştikçe fark ettirmeden bozulabilir, CSP style-src politikası satır içi bloğu tamamen engelleyebilir ve preload/onload ertelemesi zamanlama yarışına girebilir veya düzen kaymasına yol açabilir. Önce teşhis edin: Tekniği uygulamadan önce asıl oluşturma darboğazının JavaScript veya sunucu yanıt süresi değil, CSS olduğunu doğrulayın. SEO etkisi doğrudan bir sıralama sinyali değil, Core Web Vitals/LCP üzerinden dolaylıdır. Bing'e özgü bir rehber yoktur. Bu sayfa critical rendering path merkezinin altında yer alır.
TL;DR — Critical CSS bir hız tekniğidir: sayfanın insanların önce gördüğü bölümünü oluşturmak için gereken stilleri seçip doğrudan HTML içine yerleştirir, stil dosyanızın geri kalanını daha sonra yüklersiniz. Sayfanın daha hızlı görünmesini sağlayabilir; ancak Google çoğu sitenin buna ihtiyaç duymadığını söylüyor ve gerçek dezavantajları var. Başvurmadan önce teşhis koyun.
Critical CSS nedir
Tarayıcı bir sayfayı yüklediğinde CSS’nizi okuyana kadar ekrana hiçbir şey çizmez. Bu kasıtlıdır; aksi hâlde sayfa stillenmemiş biçimde görünür ve sonra yer değiştirirdi. Ancak yavaş veya ağır bir stil dosyası ilk boyamayı tamamen geciktirebilir.
Critical CSS bu sorunu aşmanın bir yoludur. Fikir iki parçadan oluşur:
- Önemli stilleri satır içine alın. Kaydırmadan önce görünen bölüm için gereken CSS’yi ayıklayın ve doğrudan sayfanın
<head>bölümüne koyun. Böylece tarayıcı ayrı bir dosyayı beklemeden sayfanın üstünü boyamak için gerekenlere sahip olur. - Geri kalanı erteleyin. Tam stil dosyasını asenkron yükleyin; böylece ilk boyamayı engellemez. Bir an sonra gelir ve geri kalanını stillendirir.
Google’ın web.dev ekibi bunu şöyle tanımlar: ekranın üst bölümündeki içeriği kullanıcıya olabildiğince hızlı göstermek için gereken CSS’yi ayıklayan bir teknik.
Evidence for this claim Critical CSS extracts and inlines above-the-fold styles so the remaining CSS can load asynchronously. Scope: web.dev definition and implementation outline for critical CSS. Confidence: high · Verified: web.dev: Extract critical CSSÇoğu kişinin yanlış anladığı nokta
Çoğu makale Critical CSS’yi uygulamanız gereken bir şey gibi sunar. Oysa Google’ın kendi belgeleri çoğu site için tam tersini söylüyor: Çoğu site, bu tekniği uygulamadan önerilen tüm performans hedeflerine ulaşabilmelidir. Bu, varsayılan olarak işaretlenecek bir kutu değil; gelişmiş ve son çare olarak başvurulacak bir optimizasyondur.
Evidence for this claim web.dev presents critical CSS as an advanced technique that can cause bugs and says most sites can meet performance targets without it. Scope: web.dev codelab guidance; not a universal recommendation. Confidence: high · Verified: web.dev: Extract and inline critical CSSÜstelik ücretsiz değildir. CSS’yi HTML içine satır içi aldığınızda tarayıcı bunu normal bir stil dosyası gibi diğer sayfalarınız için önbelleğe alamaz; bu yüzden ziyaretçinin sitenizdeki ikinci sayfa görüntülemesi gerçekten daha yavaş olabilir. “Kritik” olanla “geri kalan” arasındaki ayrımın da bakımı gerekir; şablonunuzu değiştirirseniz sessizce bozulabilir.
SEO’ya yardımcı olur mu?
Yalnızca dolaylı olarak. CSS’nin kendisi sıralama sinyali olarak okunmaz — Google’dan Martin Splitt, CSS sınıf adlarını önemsemediklerini söyledi. Critical CSS’nin yardımcı olabileceği şey sayfanın ne kadar hızlı göründüğüdür; bu da Core Web Vitals’ı, özellikle LCP’yi, etkiler. Core Web Vitals küçük bir sıralama girdisidir. Yani yol şudur: daha hızlı boyama → daha iyi LCP → mütevazı bir SEO yararı; “Critical CSS bir sıralama faktörüdür” değil.
Gerçek hâlini — nasıl uygulanacağını, Google’ın gerçek tutumunu, ödünleşimleri ve CSS’nin gerçekten darboğazınız olup olmadığını nasıl anlayacağınızı — görmek istiyorsanız Advanced sekmesine geçin.
TL;DR — Critical CSS = ekranın üst bölümündeki stilleri ayıklamak, bunları
<head>içine almak ve stil dosyasının geri kalanını asenkron olarak ertelemek (rel="preload"+onloaddeğişimi,<noscript>yedeği veyaloadCSS). CSS varsayılan olarak oluşturmayı engellediği için işe yarar. Doğruluğun temel dayanağı şudur: Google bunu varsayılan bir tavsiye olarak değil, gelişmiş ve isteğe bağlı bir teknik olarak sunar — “Most sites should be able to achieve all of our recommended performance targets without implementing this technique.” (çeviri) “Çoğu site, bu tekniği uygulamadan önerilen tüm performans hedeflerine ulaşabilmelidir.” Satır içi yükü küçük tutun. Ödünleşimler gerçektir: satır içi CSS sayfa yüklemeleri arasında önbelleğe alınmaz (tekrarlanan ziyaretler daha yavaş olabilir), şablonlar değiştikçe kritik/kritik olmayan ayrımı bozulur ve erteleme zamanlama yarışına veya FOUC/CLS’ye yol açabilir. Önce teşhis edin — asıl darboğazın JavaScript veya sunucu yanıt süresi değil, CSS olduğunu doğrulayın. Hızlı bir demoda görünmeyen tuzaklara dikkat edin: CSPstyle-srcpolitikası satır içi<style>bloğunuzu tamamen engelleyebilir; temalar, kişiselleştirme ve durumlar söz konusu olduğunda “yakalama sırasında kullanılmadı” ifadesi “ertelenmesi güvenli” anlamına gelmez; ayrıca satır içine almak font yükleme zamanlamasını çözmez. SEO etkisi Core Web Vitals/LCP üzerinden dolaylıdır. Bing’e özgü bir rehber yoktur.
Critical CSS aslında nedir
Çözdüğü sorun, oluşturmayı engelleyen CSS’dir. Google’ın web.dev sitesi bunu açıkça belirtir: CSS varsayılan olarak oluşturmayı engelleyen bir kaynak sayılır; bu da CSSOM oluşturulana kadar tarayıcının işlenmiş içeriği göstermeyeceği anlamına gelir. Tekniğin var olma nedeni tam olarak budur: Tarayıcı stillerinizi edinene kadar boyama yapmaz; dolayısıyla CSS’yi geciktiren her şey ilk boyamayı da geciktirir. Bunun altında yatan işlem hattının tamamı için bu sayfanın bağlı olduğu critical rendering path merkezine ve onun tamamlayıcısı olan render-blocking resources sayfasına bakın.
Critical CSS, CSS’yi ikiye bölerek bu sorunu ele alır.
web.dev’in tanımı:
“Critical CSS is a technique that extracts the CSS for above-the-fold content in
order to render content to the user as fast as possible.” (çeviri) “Critical CSS, ekranın üst bölümündeki içeriği kullanıcıya olabildiğince hızlı göstermek için gereken CSS’yi ayıklayan bir tekniktir.” İşleyişi ise şöyledir:
Ayıklanan stilleri HTML belgesinin <head> bölümünde satır içine almak, bu stilleri getirmek için ek istek gereksinimini ortadan kaldırır; CSS’nin geri kalanı asenkron yüklenebilir.
web.dev’in açıkça belirttiği, ancak birçok ikincil rehberin geçiştirdiği bir nokta var: there’s no single, universal above-the-fold height. Cihaz boyutu, yön, tarayıcı arayüzü, yakınlaştırma düzeyi ve sayfa durumu (açık bir menü, yüklenmiş kişiselleştirme veya hata durumu), “kritik” kümeye gerçekte nelerin girmesi gerektiğini değiştirir. Critical CSS’yi sabit bir piksel sınırı olarak değil, seçilmiş bir başlangıç görünüm alanı/durumu hakkında verilmiş bir karar olarak ele alın; tek bir masaüstü ekran görüntüsüne göre değil, gerçek kırılma noktalarınız ve durumlarınız üzerinden doğrulayın.
Yani sırasıyla iki iş vardır:
- Satır içine alın: İlk boyamadan önce ek bir gidiş-dönüş olmaması için ekran üstü CSS’nin en küçük gerekli kümesini
<head>içine alın. - Erteleyin: Stil dosyasının geri kalanını asenkron yükleyin; böylece ilk boyamayı hiçbir zaman engellemez.
Sayfa deneyimi konuşmalarımda bunu tam olarak böyle ikiye ayırdım. Sayfa Deneyiminde Sırada Ne Var? sunumumda (SMX Next 2021) CSS işini iki kovaya koydum: erken/kritik yol (kullanılmayan CSS’yi kaldır → CSS’yi küçült → Critical CSS’yi satır içine al) ve geç/ertelenmiş yol (kritik olmayan CSS’yi ertele). web.dev ile aynı şekil; yalnızca benim düşündüğüm sırada.
Nasıl uygulanır
1. adım — Critical CSS’yi satır içine alın. Lighthouse’ın kendi rehberi, ilk boyama için gereken kritik stilleri HTML sayfasının başındaki bir <style> bloğunda satır içine alın der. Aynı sayfada Google’ın satır içi yük için verdiği boyut hedefi şudur: ekranın üst bölümündeki içeriği 14 KB’nin (sıkıştırılmış) altında tutmayı hedefleyin; böylece içerik ilk ağ gidiş-dönüşüne sığar. Bu sayıyı zamandan bağımsız bir standart olarak değil, tarihsel bir aktarım rehberi olarak değerlendirin: Kaynak sayfa 2019 tarihlidir ve günümüzde yaygınlaşan HTTP/2 ile HTTP/3’ten önce yayımlanmıştır; bu iki protokol ilk gidiş-dönüş hesabını değiştirir. Google’ın kendi belgelerinde hâlâ belirtilen sayı budur; ancak hassas ayar yapıyorsanız 14 KB’yi değişmez bir kural saymak yerine mevcut protokolünüz ve sunucu davranışınız üzerinden doğrulayın.
2. adım — Geri kalanı erteleyin. web.dev’in kritik olmayan CSS’yi ertelemek için önerdiği desen, onload değişimi ve <noscript> yedeği olan bir preload’dur:
<link rel="preload" href="styles.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="styles.css"></noscript>web.dev, üretimde değişimi elle yazmak yerine bu davranışı kapsülleyen ve tarayıcılar genelinde iyi çalışan loadCSS gibi CSS erteleme işlevlerini kullanmayı tavsiye eder. Bunun yerine JavaScript ile erteleme yaparsanız web.dev, kritik olmayan CSS’yi yüklemeden önce JavaScript’in çalışmasını beklemenin kullanıcı kaydırdığında oluşturmayı geciktirebileceği uyarısını yapar. preload bu nedenle indirmeyi daha erken başlatmak için kullanılır.
Araçlar. Critical CSS’yi nadiren elle ayıklarsınız. Google’ın referans uygulaması Addy Osmani’nin critical npm paketidir — “a tool that extracts, minifies and inlines above-the-fold CSS.” (çeviri) “Ekranın üst bölümündeki CSS’yi ayıklayan, küçülten ve satır içine alan bir araç.” Alternatifler arasında Penthouse ve CriticalCSS’nin yanı sıra WordPress ve Shopify için çok sayıda SaaS/eklenti oluşturucusu bulunur. Kritik kuralları kendiniz bulmak için Google, kritik olmayan CSS ve JavaScript’i belirlemek üzere Chrome DevTools’taki Coverage sekmesini önerir.
Bir eklenti veya oluşturucu (WP Rocket, Autoptimize ve benzerleri) kullanıyorsanız satıcının arayüz turunu veya önce/sonra puan ekran görüntüsünü platform garantisi saymayın. Bu sayfalar ürün sürümlerini ve belirli site sonuçlarını serbestçe birbirine karıştırır; puan farkları bağımsız olarak yeniden üretilmiş değildir. Üretimde güvenmeden önce davranışı eklentinin güncel belgeleri ve sürüm numarasıyla doğrulayın ve elle yazılmış bir uygulamada kullanacağınız test matrisiyle — soğuk ve tekrarlı yüklemeler, gerçek kırılma noktalarınız/temalarınız/durumlarınız ve kullanıyorsanız CSP politikanız — sınayın.
Critical CSS’nin oluşturmayı engelleyen CSS için yalnızca bir çözüm olduğunu unutmayın. Diğerleri stil dosyalarını media özniteliğiyle kapsamlandırmak (böylece indirilmeleri ama boyamayı engellememeleri) ve baştan daha az CSS göndermektir. web.dev’in oluşturmayı engelleyen CSS makalesi satır içine almak yerine aslında media yaklaşımını öne çıkarır; yani hangi belgeyi okuduğunuza göre Google’ın birden fazla resmî reçetesi vardır.
Google’ın gerçek tutumu (doğruluk omurgası)
Rakip makalelerin neredeyse tamamının arka plana attığı ve bu yazıyı kaleme almak istememin asıl nedeni olan bölüm budur. Google, Critical CSS’yi varsayılan bir tavsiye olarak sunmaz. Codelab risk konusunda son derece açıktır: Bu codelab, performansı artırabilen ancak doğru uygulanmazsa hatalara da yol açabilen gelişmiş bir performans tekniğini anlatır. Google ayrıca belgelerinde iki kez çoğu sitenin bununla uğraşmasına gerek olmadığını söyler: Çoğu site, bu tekniği uygulamadan önerilen tüm performans hedeflerine ulaşabilmelidir.
Evidence for this claim web.dev presents critical CSS as an advanced technique that can cause bugs and says most sites can meet performance targets without it. Scope: web.dev codelab guidance; not a universal recommendation. Confidence: high · Verified: web.dev: Extract and inline critical CSSSağladığı yarar bile bir uyarıyla birlikte gelir. web.dev, satır içine almanın tarayıcının CSS’yi sonraki sayfa yüklemelerinde yeniden kullanmak üzere önbelleğe almasını engellediğini, bu nedenle ölçülü uygulanması gerektiğini belirtir; aşırı uygulama konusunda da her şey öncelikliyse hiçbir şey öncelikli değildir der. Gereğinden fazla CSS’yi satır içine alırsanız hızlı iletmeye çalıştığınız HTML’yi şişirirsiniz.
Dürüst çerçeve şudur: Critical CSS gerçek, belgelenmiş ve bazen güçlü bir tekniktir; ama Google’ın çoğu sitenin hedeflerine ulaşmak için ihtiyaç duymadığını söylediği gelişmiş, isteğe bağlı ve son çare bir tekniktir. Ona bu şekilde yaklaşın.
Gerçek ödünleşimler
Bağımsız performans mühendisleri burada en yüksek sesle konuşanlar oldu ve Google’ın kendi uyarılarıyla aynı çizgideler.
Tekrarlanan ziyaretlerde önbellek kaybı. DebugBear’dan Matt Zeunert bunu açıkça ifade eder: Critical CSS’nin sitenizde farklı sayfa yüklemeleri arasında yeniden kullanılamayacağını ve bu nedenle sonraki sayfa görüntülemelerinin Critical CSS olmadan olduğundan daha yavaş olabileceğini belirtir. Normal bir harici stil dosyası bir kez önbelleğe alınır ve her yerde yeniden kullanılır; satır içi CSS ise her HTML yanıtının içinde yeniden indirilir.
Bakım ve regresyon riski. Harry Roberts’ın karşıt görüşlü yazısı bu konuda en çok atıf alan değerlendirmedir. Uyarısı şudur: Critical CSS’yi sonradan uyarlamak zor ve hataya açıktır. CSS’nin darboğazınız olduğunu belirledikten sonra “you need to keep it that way… One wrong decision can undo everything.” (çeviri) “Böyle kalmasını sağlamalısınız… Tek bir yanlış karar her şeyi bozabilir.” Otomatik yeniden doğrulama yoktur; bir şablon veya tasarım değişikliği kritik/kritik olmayan ayrımınızı fark ettirmeden bozabilir.
Ertelemedeki zamanlama yarışları. Roberts, preload/onload değişiminin zamanlama açısından ters tepebileceğine de dikkat çeker:
tarayıcının <head> bölümünü ayrıştırması 1 saniye, kritik olmayan CSS’yi asenkron getirmesi 0,5 saniye sürerse CSS’nin siz hazır olmadan 0,5 saniye önce yeniden senkron bir dosyaya dönüşeceğini belirtir.
Kritik olmayan CSS geç ulaştığında stillenmemiş içerik parlaması ve düzen kayması riski de doğar.
Çoğu zaman darboğaz CSS değildir. Roberts’ın temel tezi şudur: Critical CSS’nin yalnızca en büyük oluşturma engelleyici darboğaz CSS ise yardımcı olduğunu ve çoğu zaman durumun böyle olmadığını söyler. DebugBear da aynı görüştedir: Satır içine almadan önce sorunun gerçekten CSS olup olmadığını kontrol edin; çünkü hâlâ oluşturmayı engelleyen JavaScript kodunuz varsa CSS’yi satır içine almanın yardımcı olma ihtimali düşüktür ve “often it’s not the most impactful optimization.” (çeviri) “Çoğu zaman en etkili optimizasyon bu değildir.”
Üretim tuzakları: CSP, durum ve fontlar
Hızlı bir demoda görünmeyen, ancak canlıya çıktıktan sonra can yakan üç hata modu daha var:
CSP politikası satır içi <style> bloğunuzu tamamen engelleyebilir. Content-Security-Policy style-src politikası, politika açıkça izin vermediği sürece satır içi kritik <style> bloğunu engelleyebilir; genellikle izin nonce veya eşleşen bir hash ile verilir. MDN ihlal durumlarını ve nonce/hash mekanizmalarını belgeler. Konsol hatasını susturmak için unsafe-inline kullanmak site genelinde politikayı zayıflatır ve varsayılan çözüm değildir. Nonce/hash üretimini Critical CSS’yi ayıklayan araca bağlayın ve yayına çıktıktan sonra tarayıcı konsolunda ihlal olup olmadığını kontrol edin.
“Yakalama sırasında kullanılmadı” ile “ertelenmesi güvenli” aynı şey değildir. Coverage sekmesi, tek bir kayıtlı çalıştırma sırasında hangi CSS’nin yürütüldüğünü söyler. Güvenli bir ayrım; basamaklandırma sırasını ve gerçek duyarlı kırılma noktalarınız, tema varyantlarınız, kişiselleştirilmiş içerik, odak durumları, açık menü/modal durumları ve hata durumları için gereken kuralları korumalıdır — o geçişte tesadüfen oluşturulanları değil. Roberts aynı soruyu başka açıdan sorar: ayıklamanız hangi görünüm alanını ve hangi ekran dışı ya da etkileşilmemiş öğeleri (açılır menüler, uçan paneller) gerçekten kapsamalı?
Font sorununu çözmez ve oluşturma işini artırabilir. Öğe stillerini satır içine almak bir web fontunun daha erken keşfedilmesini veya metnin zamanında oluşturulmasını tek başına sağlamaz; font keşfi, preload, font-display ve yedek metrikler Critical CSS’nin dokunmadığı ayrı bağımlılıklardır. Ayrıca küçük bir satır içi alt kümenin ardından daha büyük bir stil dosyası uygulamak ek stil yeniden hesaplama, düzen ve boyama işi anlamına gelebilir; getirme gecikmesini azaltmak toplam oluşturma işinin de azalacağı anlamına gelmez. Yalnızca ağ şelalesini değil ikisini de ölçün.
Gerçekten ihtiyacınız olup olmadığını nasıl teşhis edersiniz
Bütün bunlar ışığında “Critical CSS ekle” diye başlamayın; “CSS’nin oluşturma darboğazım olduğunu doğrula” diye başlayın ve orada durmayın. Buna değmesi için dört kapının da geçilmesi gerekir:
1. CSS tahmin değil, kanıtlanmış bir engelleyicidir.
- PageSpeed Insights / Lighthouse raporunu açın. Lighthouse 13 itibarıyla eski “Eliminate render-blocking resources” denetimi Render-blocking requests içgörüsüne taşındı; bu nedenle eski denetim adını kullanan makaleler güncelliğini yitirmiştir.
- İlk boyamada CSS’nizin (ve JS’nizin) ne kadarının gerçekten kullanılmadığını görmek için Chrome DevTools’taki Coverage sekmesini kullanın.
- Nedenleri ayırın. Darboğazınız oluşturmayı engelleyen JavaScript veya yavaş bir sunucu yanıtı (TTFB) ise CSS’yi satır içine almak bunu düzeltmez; yanlış şeyi optimize etmiş olursunuz.
2. Gerçek kırılma noktalarınız, temalarınız, kişiselleştirmeniz ve etkileşimli durumlarınız boyunca gerçekten kararlı bir ayıklama kapsamı oluşturabilirsiniz — tek bir masaüstü ekran görüntüsüyle değil (yukarıdaki tuzaklara bakın).
3. Tekrarlanan görüntüleme ve CSP maliyeti kabul edilebilir. Satır içi CSS önbelleğe alınmaz; bunu tipik oturumunuzun ne kadar derin olduğuyla tartın. CSP style-src politikası çalıştırıyorsanız nonce/hash üretimi canlıya çıktıktan sonra keşfedilecek bir şey değil, yayından önce işlem hattına bağlanması gereken bir iştir.
4. Bunun bakımını gerçekten yapacaksınız. Her şablon veya tasarım değişikliğinde yeniden üretin ve tek bir gözle kontrol yerine tam test matrisini — soğuk ve tekrarlı yüklemeleri, desteklediğiniz her rota/görünüm alanı/durumu — yeniden çalıştırın.
Dört kapının tümü geçiliyorsa Critical CSS bakım maliyetine değer. Biri bile geçilmiyorsa kullanılmayan CSS’yi kaldırmak, küçültmek ve kritik olmayan stil dosyalarını media ile kapsamlandırmak gibi daha ucuz düzeltmeler daha iyi hamledir.
2026 için güncel bir sürpriz
Dikkat çekmeye değer güncel bir ayrıntı var: Google belgelerinin CSS’yi ertelemek için önerdiği tam <link rel="preload" as="style"> deseninin, bir Lighthouse/PSI nokta güncellemesinden sonra yeniden oluşturmayı engelleyen kaynak olarak işaretlenmeye başladığına ilişkin açık ve henüz çözümlenmemiş bir bildirim bulunuyor.
GitHub issue #17031, önceden yüklenen CSS’nin Lighthouse 13.0.1’de yeşil gösterilirken 13.3.0’da oluşturmayı engelleyen kaynak olarak işaretlendiğini belgeliyor. Bu yazı hazırlanırken Google tarafından kamuya açıklanmış bir çözüm yoktu; dolayısıyla durumu gelişmekte olan bir konu olarak değerlendirin. Pratik ders yine de geçerlidir: PSI doğru biçimde ertelenmiş CSS’nizi işaretlerse denetimin kendisi hatalı olabilir; uygulamanızın bozuk olduğunu varsaymak yerine raporu eleştirel biçimde inceleyin.
Critical CSS SEO’ya yardımcı olur mu?
Dolaylı ve mütevazı biçimde. Birbirinden ayırmanız gereken iki nokta var:
- CSS doğrudan bir sıralama sinyali değildir. Google’dan Martin Splitt, CSS sınıf adları hakkında şöyle demiştir: “I don’t think we care because the CSS class names are just that.” (çeviri) “Bunu önemsediğimizi sanmıyorum; CSS sınıf adları yalnızca adlardan ibaret.” Bu açıklama özellikle sınıf adlarıyla ilgilidir; ancak CSS tercihlerinizin sıralama girdisi olarak okunduğu yönündeki daha geniş efsaneyi de çürütür.
- Hız, Core Web Vitals üzerinden küçük bir sinyaldir. Critical CSS ilk boyamayı iyileştirebilir; bu da Google’ın sayfa deneyimi sinyallerine katkıda bulunan bir Core Web Vitals metriği olan LCP’yi iyileştirebilir. SEO bağlantısının tamamı budur: Tekniğin kendisi için verilen bir avantaj değil, daha hızlı boyamadır.
Bu nedenle Critical CSS’nin SEO gerekçesi, sitenizdeki LCP etkisi kadar güçlüdür; Google’a ve performans topluluğuna göre bu etki çoğu zaman onu satan araçların ima ettiğinden küçüktür.
Bing ne olacak?
Bing’e özgü bir şey yok. Tekniği ele alan birden fazla web.dev sayfası ve bir codelab yayımlayan Google’ın aksine, Critical CSS’yi ele alan özel bir Bing/Microsoft belgesi bulamadım. Bing’in genel sayfa deneyimi rehberi geçerlidir (hızlı tutun, kritik içeriğe erişilebilir tutun); ancak web.dev’in Critical CSS codelab’inin Bing karşılığı yoktur. Bing’in özel bir Critical CSS tavsiyesi olduğunu söyleyen kişi bunu uyduruyordur.
Bu sayfanın yeri
Bu sayfa critical rendering path merkezinin altında yer alır; Critical CSS bu yolu kısaltmak için kullanılan taktiklerden biridir. render-blocking resources sayfasının pratik kardeşidir. Kazanç varsa Largest Contentful Paint (LCP), First Contentful Paint (FCP) ve daha geniş Core Web Vitals kümesinde görünür. Daha geniş performans resmi için web performance kümesine bakın.
AI özeti
Advanced sürümünün kısaltılmış hâli:
- Critical CSS = ayıkla + satır içine al + ertele. Ekranın üst bölümündeki CSS’yi ayıklayın,
<head>içine alın ve stil dosyasının geri kalanını asenkron yükleyin. CSS varsayılan olarak oluşturmayı engellediği için çalışır (CSSOM oluşturulana kadar tarayıcı işlenmiş içeriği göstermez). Evrensel bir ekran üstü yüksekliği yoktur; cihaz, yön, yakınlaştırma ve sayfa durumu neyin “kritik” olduğunu değiştirir. - Uygulama: Kritik stilleri bir
<style>bloğuna alın; geri kalanırel="preload"+onloaddeğişimi ve<noscript>yedeğiyle (veyaloadCSSile) erteleyin. Satır içi yükü sıkıştırılmış olarak yaklaşık 14 KB’nin altında tutun. Bu, Google’ın 2019 tarihli ve hâlâ yaygın biçimde atıf alan rehberidir; ancak güncel protokol davranışı üzerinden doğrulanmalıdır. Araçlar:critical(Addy Osmani), Penthouse ve eklenti oluşturucuları; eklentilerin sürüme özgü iddialarını bağımsız olarak doğrulayın. Kritik kuralları DevTools Coverage sekmesiyle bulun. - Google’ın tutumu (doğruluk omurgası): Bu, varsayılan bir tavsiye değil, gelişmiş ve isteğe bağlı bir tekniktir. Google, çoğu sitenin bu tekniği uygulamadan önerilen tüm performans hedeflerine ulaşabilmesi gerektiğini söyler. Codelab ayrıca doğru uygulanmazsa tekniğin hatalara yol açabileceğini belirtir.
- Ödünleşimler: Satır içi CSS sayfa yüklemeleri arasında önbelleğe alınmaz (DebugBear’a göre tekrarlanan ziyaretler daha yavaş olabilir); şablonlar, temalar veya durumlar değiştikçe kritik/kritik olmayan ayrım bozulur (Harry Roberts’a göre tek bir yanlış karar her şeyi bozabilir); CSP
style-srcpolitikası nonce/hash olmadan satır içi bloğu engelleyebilir; preload/onload değişimi zamanlama yarışına girebilir veya FOUC/CLS’ye yol açabilir; ayrıca font yükleme zamanlamasını tek başına düzeltmez. - Önce teşhis edin; dört koşulu doğrulayın: Gerçek oluşturma engelleyici darboğazın JavaScript veya sunucu yanıt süresi değil, CSS olduğunu doğrulayın (Roberts, DebugBear); ayıklama kapsamının kırılma noktaları, temalar ve durumlar genelinde kararlı olduğundan emin olun; tekrarlanan görüntüleme ve CSP maliyetinin kabul edilebilir olduğunu doğrulayın; bakımını yapıp yeniden test edeceğinizden emin olun. JavaScript engelliyorsa CSS’yi satır içine almak yardımcı olmaz.
- SEO etkisi dolaylıdır: CSS doğrudan bir sıralama sinyali değildir (Martin Splitt’in sınıf adlarına ilişkin açıklaması); tek bağlantı daha hızlı boyama → LCP → Core Web Vitals zinciridir.
- Bing için özel bir rehber bulunmaz. Ayrıca doğru biçimde ertelenmiş CSS’yi oluşturmayı engelleyen kaynak olarak işaretleyen güncel 2026 Lighthouse 13.3.0 regresyonuna (issue #17031) dikkat edin.
Resmî belgeler
Critical CSS ve oluşturmayı engelleyen kaynaklar hakkında birincil kaynak belgeleri.
Google / web.dev
- Critical CSS’yi ayıklama — temel tanım, satır içine alma ve erteleme mekanikleri, yaklaşık 14 KB hedefi ve “ölçülü kullanın” önbellek uyarısı.
- Critical ile Critical CSS’yi ayıklama ve satır içine alma (codelab) —
criticalaracıyla uygulamalı çalışma; tekniğin gelişmiş olduğu, hatalara yol açabileceği ve çoğu sitenin buna ihtiyaç duymadığı uyarıları. - Kritik olmayan CSS’yi erteleme —
rel="preload"+onloaderteleme deseni veloadCSSönerisi. - Kritik varlıkları önceden yükleme — ertelenen CSS’nin neden preload edilmesi gerektiği ve JS ertelemesinin kaydırma gecikmesi uyarısı.
- Oluşturmayı engelleyen CSS — CSS’nin neden oluşturmayı engellediği; çözümü satır içine alma yerine
mediaözniteliği çevresinde çerçeveler. - Kritik yolu anlama — Critical CSS’nin daha geniş critical-rendering-path resmindeki yeri.
Google / Geliştiriciler için Chrome (Lighthouse)
- Oluşturmayı engelleyen kaynakları ortadan kaldırma — bu çalışmanın arkasındaki denetim: kritik stilleri satır içine almak, kritik olmayanları ertelemek ve Coverage sekmesini kullanmak. (Not: Lighthouse 13 itibarıyla “Render-blocking requests” içgörüsüne taşındı.)
- CSS sunumunu optimize etme (eski/kullanımdan kaldırılmış) — “Critical CSS” tavsiyesini popülerleştiren özgün PageSpeed Insights belgesi; güncel rehberlikten çok tarih için yararlı.
MDN
- Content-Security-Policy: style-src — eşleşen nonce veya hash olmadan CSP
style-srcpolitikasının satır içi<style>bloklarını nasıl engellediğini veunsafe-inline’ın neden çözüm olmadığını belgeler. Çoğu Critical CSS rehberinin atladığı üretim tuzağı.
Bing / Microsoft
- Bing’e özgü “Critical CSS” belgesi yoktur. Bing’in genel performans/UX rehberi geçerlidir (Bing Webmaster Tools Site Scan sayfasına bakın); ancak web.dev’in Critical CSS codelab’inin Bing karşılığı yoktur.
Kaynaktan alıntılar
Google/web.dev, Google’dan Martin Splitt ve adı geçen performans uzmanlarının kayda geçmiş açıklamaları. Bir metin parçasını destekleyen her web.dev/Chrome bağlantısı alıntı bölgesine giden derin bağlantıdır.
Google / web.dev — nedir ve nasıl çalışır
- “Critical CSS is a technique that extracts the CSS for above-the-fold content in order to render content to the user as fast as possible.” (çeviri) “Critical CSS, ekranın üst bölümündeki içeriği kullanıcıya olabildiğince hızlı göstermek için gereken CSS’yi ayıklayan bir tekniktir.” Alıntıya git
- “Inlining extracted styles in the
<head>of the HTML document eliminates the need to make an additional request to fetch these styles. The remainder of the CSS can be loaded asynchronously.” (çeviri) “Ayıklanan stilleri HTML belgesinin head bölümünde satır içine almak ek istek gereksinimini ortadan kaldırır; CSS’nin geri kalanı asenkron yüklenebilir.” Alıntıya git - “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.” (çeviri) “CSS varsayılan olarak oluşturmayı engelleyen bir kaynaktır; CSSOM oluşturulana kadar tarayıcı işlenmiş içeriği göstermez.” Alıntıya git
Google / web.dev — gelişmiş ve isteğe bağlı (doğruluk omurgası)
- “Most sites should be able to achieve all of our recommended performance targets without implementing this technique.” (çeviri) “Çoğu site, bu tekniği uygulamadan önerdiğimiz tüm performans hedeflerine ulaşabilmelidir.” — web.dev, Critical CSS’yi ayıklama ve satır içine alma codelab’i. Codelab’i oku
- “This codelab describes an advanced performance technique that can improve performance, but can also lead to bugs if not implemented properly.” (çeviri) “Bu codelab, performansı artırabilen ancak doğru uygulanmazsa hatalara yol açabilen gelişmiş bir performans tekniğini anlatır.” Codelab’i oku
- Aşırı satır içine alma hakkında: “If everything is prioritized then nothing is.” (çeviri) “Her şey öncelikliyse hiçbir şey öncelikli değildir.” — web.dev, Critical CSS’yi ayıklama. Makaleyi oku
Google / Chrome (Lighthouse) — denetimin kendi reçetesi
- “Inline critical styles required for the first paint inside a
<style>block at theheadof the HTML page.” (çeviri) “İlk boyama için gereken kritik stilleri HTML sayfasının head bölümündeki bir style bloğunda satır içine alın.” Denetimi oku
Google Search Relations’dan Martin Splitt (Search Engine Journal aracılığıyla)
- CSS sınıf adlarının bir sıralama sinyali olup olmadığı hakkında: “I don’t think it does. I don’t think we care because the CSS class names are just that.” (çeviri) “Bunun bir etkisi olduğunu sanmıyorum. CSS sınıf adları yalnızca adlardan ibaret olduğu için bunları önemsediğimizi düşünmüyorum.” Haberi oku
Bağımsız web performansı danışmanı Harry Roberts (csswizardry.com)
- “Critical CSS only helps if CSS is your biggest render-blocking bottleneck, and quite often, it isn’t.” (çeviri) “Critical CSS yalnızca en büyük oluşturma engeliniz CSS ise yardımcı olur; çoğu zaman da değildir.” Makaleyi oku
- “Retrofitting Critical CSS is difficult and error prone.” (çeviri) “Critical CSS’yi sonradan eklemek zordur ve hataya açıktır.” — bakım konusunda da “One wrong decision can undo everything.” (çeviri) “Tek bir yanlış karar her şeyi bozabilir.” Makaleyi oku
DebugBear kurucusu Matt Zeunert
- “critical CSS can’t be re-used between different page loads on your website. So subsequent page views can actually be slower than they would be without critical CSS.” (çeviri) “Critical CSS farklı sayfa yüklemeleri arasında yeniden kullanılamaz; bu nedenle sonraki sayfa görüntülemeleri Critical CSS olmadan olduğundan daha yavaş olabilir.” Makaleyi oku
- “Before deciding to inline critical CSS, check if it’s actually the bottleneck for rendering content on your website. For example, if you still have render-blocking JavaScript code, inlining CSS is unlikely to help.” (çeviri) “Critical CSS’yi satır içine almadan önce sitenizde içerik oluşturmanın gerçek darboğazı olup olmadığını kontrol edin. Oluşturmayı engelleyen JavaScript hâlâ varsa CSS’yi satır içine almanın yardımcı olması beklenmez.” Makaleyi oku
#:~:text= sıçraması kullanmaz. Martin Splitt satırı birincil Google transkripti değil, Search Engine Journal kapsamı üzerinden aktarılmıştır ve özellikle CSS sınıf adlarıyla ilgilidir. Herhangi bir alıntıyı kesin kabul etmeden önce canlı kaynağıyla doğrulayın. Critical CSS uygulamalı mısınız?
Google, Harry Roberts ve DebugBear “most sites don’t need this,” (çeviri) “çoğu site buna ihtiyaç duymaz” dediği için buradaki yararlı çıktı bir nasıl-yapılır yazısı değil, yapmalı mıyım karar ağacıdır. Yukarıdan aşağı yürüyün.
1. PageSpeed Insights / Lighthouse oluşturmayı engelleyen kaynakları hiç işaretliyor mu?
- Hayır → Yapmayın. Sahip olmadığınız bir sorunu çözüyorsunuz.
- Evet → Devam edin.
2. Oluşturmayı engelleyen kaynak CSS mi, yoksa JavaScript / yavaş sunucu (TTFB) mu?
- JavaScript veya TTFB → Önce onu düzeltin. JS engelliyorsa veya sunucunuz yavaşsa (DebugBear) CSS’yi satır içine almak yardımcı olmaz. Ancak CSS sonrasında hâlâ darboğazsa geri dönün.
- CSS → Devam edin.
3. Daha ucuz CSS düzeltmeleriyle performans hedeflerinize önce ulaşabilir misiniz? Satır içine almadan önce şunları sırayla deneyin:
- Kullanılmayan CSS’yi kaldırın (Coverage sekmesi).
- Stil dosyasını küçültün ve sıkıştırın.
- Kritik olmayan stil dosyalarını
mediaözniteliğiyle kapsamlandırın; böylece indirilir ama boyamayı engellemez (web.dev’nin oluşturmayı engelleyen CSS belgesindeki tercih ettiği çözüm). - Hedefler hâlâ tutmuyor mu? → Devam edin.
4. Temalar, durumlar ve CSP genelinde kritik/kritik olmayan ayrımın bakımını üstlenebilir misiniz?
Şablonlar değiştiğinde Critical CSS fark ettirmeden bozulur (“one wrong decision can undo everything” (çeviri) “tek bir yanlış karar her şeyi bozabilir”); ayrıca tek bir test çalıştırmasında “yakalama sırasında kullanılmadı” olması, tema varyantlarınız, kişiselleştirilmiş içeriğiniz ve açık/odak/hata durumlarınız genelinde “ertelenmesi güvenli” olduğu anlamına gelmez. CSP style-src politikası kullanıyorsanız nonce/hash üretimi sonradan düşünülecek bir ayrıntı değil, işlem hattının parçası olmalıdır.
- Hayır / şablon hızla değişiyor veya durum matrisini kapsayamıyorsunuz → Bakım maliyeti muhtemelen kazancı aşar. Yukarıdaki daha ucuz düzeltmeleri tercih edin.
- Evet / şablon kararlı, gerçek durumları kapsayabiliyor ve değişikliklerde yeniden üreteceksiniz → Devam edin.
5. Oturum başına çok sayıda tekrarlanan sayfa görüntülemeniz var mı? Satır içi CSS önbelleğe alınmaz; bu nedenle ikinci ve üçüncü sayfa görüntülemeleri önbellek avantajını kaybederek yavaşlayabilir (DebugBear).
- Evet, çok sayfalı ve derin oturumlar → Tekrarlanan görüntüleme cezasını değerlendirin; yalnızca açılış/giriş şablonlarında satır içine almayı düşünün.
- Çoğunlukla tek sayfalık girişler (ör. içerik/açılış sayfaları) → Devam edin.
Hâlâ buradaysanız: CSS’nin darboğaz olduğunu doğruladınız, daha ucuz düzeltmeleri tükettiniz, kararlı bir şablonunuz ve tek girişli trafiğiniz var. İşte şimdi Critical CSS buna değer. Bir araçla (critical, Penthouse veya bir eklenti) üretin, satır içi yükü sıkıştırılmış yaklaşık 14 KB’nin altında tutun ve her şablon değişikliğinden sonra yeniden doğrulayın.
Critical CSS — uygulama kontrol listesi
CSS’nin gerçekten oluşturmayı engelleyen darboğazınız olduğunu doğruladıktan sonra (Coverage sekmesi / PageSpeed) başlayın.
- Darboğazın oluşturmayı engelleyen JavaScript veya yavaş bir sunucu yanıtı (TTFB) değil, CSS olduğunu doğruladım.
- Önce daha ucuz çözümleri denedim: kullanılmayan CSS’yi kaldırdım, stil dosyasını küçültüp sıkıştırdım ve kritik olmayan stil dosyalarını
mediaile kapsamlandırdım; buna rağmen hedefleri hâlâ karşılayamıyorum. - Tüm stil dosyasını değil, gerçek kırılma noktaları, temalar ve durumlar üzerinden ekranın üst bölümü için gereken Critical CSS’yi (
critical, Penthouse veya bir oluşturucu aracılığıyla) ayıkladım; tek bir masaüstü ekran görüntüsüne güvenmedim. - Critical CSS’yi bir
<style>bloğunda<head>içine satır içi olarak ekledim. - CSP
style-srcpolitikası kullanıyorsam nonce/hash üretimini işlem hattına bağladım ve gerçek üretim politikası altında konsol ihlali bulunmadığını doğruladım. - Satır içi yükü sıkıştırılmış olarak yaklaşık 14 KB’nin altında tuttum. Bu, Google’ın 2019 tarihli ve hâlâ atıf alan rehberidir; ancak mevcut protokolünüz üzerinden doğrulanmalıdır (ilk gidiş-dönüşe sığması için).
- Tam stil dosyasını asenkron olarak erteledim (
rel="preload"+onloaddeğişimi veyaloadCSS). - JavaScript’i kapalı kullanıcılar için
<noscript>yedek stil dosyasını ekledim. - Ertelenen CSS ulaşırken FOUC / düzen kayması oluşup oluşmadığını kontrol ettim (CLS’yi izledim).
- PageSpeed/Lighthouse’ı yeniden çalıştırdım ve oluşturmayı engelleyen kaynak sonucunu eleştirel biçimde okudum (doğru ertelenmiş bir CSS dosyası yanlış işaretlenebilir; issue #17031’e bakın).
- Bir yeniden doğrulama hatırlatıcısı ayarladım: Ayrım fark ettirmeden bozulabileceği için her şablon veya tasarım değişikliğinden sonra Critical CSS’yi yeniden üreteceğim.
- Tekrarlanan ziyaret performansını kontrol ettim: Satır içi CSS önbelleğe alınmadığından ikinci sayfa görüntülemelerinin gerilemediğini doğruladım.
Critical CSS karşıt kalıpları
Tekrarlanan hatalar — çoğu gelişmiş ve isteğe bağlı bir tekniği varsayılan bir teknik gibi görmekten doğar.
Teşhis koymadan başvurmak. En yaygın hata budur. Oluşturmayı engelleyen kaynak JavaScript veya yavaş bir sunucuysa CSS’yi satır içine almak hiçbir işe yaramaz: oluşturmayı engelleyen JavaScript kodunuz hâlâ varsa CSS’yi satır içine almanın yardımcı olma ihtimali düşüktür. Önce darboğazın CSS olduğunu doğrulayın.
Her şeyi satır içine almak. Stil dosyanızın tamamını satır içine dökmek, hızlı iletmeye çalıştığınız HTML’yi şişirir. web.dev şöyle der: if everything is prioritized then nothing is. Critical CSS, “tamamını satır içine almak” değil, ekranın üst bölümü için gereken asgari CSS’dir.
Tekrarlanan ziyaretlerin maliyetini görmezden gelmek. Satır içi CSS önbelleğe alınmaz; bu nedenle sonraki sayfa görüntülemeleri Critical CSS olmadan olduğundan daha yavaş olabilir. Tekniği çok sayfalı ve derin bir kullanıcı yolculuğuna site genelinde uygulamak, oturumun tamamını hızlandırmak yerine yavaşlatabilir.
Kurup unutmak. Otomatik yeniden doğrulama yoktur. Harry Roberts’ın uyardığı gibi tek bir yanlış karar her şeyi bozabilir: Bir şablon değişikliği ayrımı fark ettirmeden bozar ve artık ekranın üst bölümü için yanlış veya eksik CSS gönderirsiniz.
PSI işaretini CSS’nin sorun olduğuna kanıt saymak. Denetim oluşturmayı engelleyen kaynakları işaretler; darboğazınızın CSS olduğunu kanıtlamaz ve doğru ertelenmiş CSS’yi bile yanlış işaretleyebilir (canlı Lighthouse 13.3.0 regresyonu, issue #17031). Raporu okuyun; yalnızca puana tepki vermeyin.
Doğrudan SEO artışı beklemek. Critical CSS bir sıralama faktörü değildir. CSS bir sıralama sinyali olarak okunmaz (Martin Splitt); tek kaldıraç daha hızlı boyama → LCP → Core Web Vitals’tır ve yalnızca teknik sizin LCP’nizi gerçekten iyileştirirse.
CSP’yi kontrol etmeden yayımlamak. Siteniz Content-Security-Policy style-src başlığı kullanıyorsa eşleşen nonce veya hash’i olmayan satır içi <style> bloğu gets blocked outright. Hatayı susturmak için unsafe-inline kullanmak, işlem hattını düzeltmek yerine sitenin tamamındaki politikayı zayıflatır.
Tek bir temadan, durumdan veya rotadan ayıklayıp işi bitmiş saymak. Bir Coverage kaydında “kullanılmadı” olması karanlık temanızda, kişiselleştirilmiş içeriğinizde veya açık modalınızda “ertelenmesi güvenli” olduğu anlamına gelmez; yalnızca varsayılan durumu hesaba katan bir ayrım herkes için bozuk ekran üstü stilleri gönderir.
Critical CSS araçları
Ayıklama / üretme
critical(Addy Osmani) — Google’ın referans npm paketi; “extracts, minifies and inlines above-the-fold CSS.” (çeviri) “Ekranın üst bölümündeki CSS’yi ayıklar, küçültür ve satır içine alır.” Google’ın kendi codelab’inde kullanılan araçtır.- Penthouse — genellikle derleme işlem hatlarına bağlanan, yaygın bir kritik yol CSS oluşturucusudur.
- CriticalCSS ve çeşitli SaaS / eklenti oluşturucuları — WordPress, Shopify ve benzeri platformlardaki teknik bilgisi sınırlı uygulayıcılar için seçeneklerdir (WP Rocket, corewebvitals.io ve diğerleri). Kullanışlıdırlar; ancak aynı ödünleşimler ve bakım riskleri onlar için de geçerlidir.
Teşhis (önce bunu yapın)
- Chrome DevTools — Coverage sekmesi — kritik olmayan CSS ve JS’yi belirlemek için Google’ın kendi önerisi; ilk boyamada her dosyanın ne kadarının kullanılmadığını gösterir.
- PageSpeed Insights / Lighthouse — oluşturmayı engelleyen denetim (şimdi Lighthouse 13’te “Render-blocking requests” içgörüsü). Oluşturmayı engelleyen bir sorununuz olup olmadığını söyler; nedenin otomatik olarak CSS olduğunu söylemez.
- WebPageTest — ilk boyamayı tam olarak hangi kaynakların geciktirdiğini görmek için şelaleyi ve “Start Render” satırını okuyun.
- DebugBear — önbellek ve darboğaz ödünleşimleri hakkında izleme ve açık bir açıklama.
Critical CSS sorunlarını belirtiye göre teşhis edin
Sayfa stillenmemiş içerik parlaması yapıyor
Muhtemel neden: Ayıklanan kritik küme eksik veya ertelenen stil dosyası çok geç geliyor. Düzeltme: İlk görünüm için gereken düzen ve tipografi kurallarını geri yükleyin, ardından gerçek şablon durumuna göre yeniden üretin. Doğrulama: Soğuk ve yavaşlatılmış film şeridinde ilk boyamadan itibaren stiller doğru görünür.
İlk görünüm doğru ama aşağıdaki içerik bozuluyor
Muhtemel neden: Kritik olmayan paket yüklenemedi veya yükleme deseni sayfa başlatmasıyla yarışıyor. Düzeltme: Yalnızca onload yoluna güvenmeden stil dosyası isteğini ve yedek davranışını doğrulayın. Doğrulama: JavaScript geciktirilmişken kaydırma ve gezinme tamamen stillenmiş içeriği gösterir.
Critical CSS bir şablona yardım ederken diğerine zarar veriyor
Muhtemel neden: Farklı ilk görünüm içeriğine sahip düzenler arasında tek bir üretilmiş küme yeniden kullanıldı. Düzeltme: Ayıklamayı şablona göre kapsamlandırın veya bakım maliyeti kazancı aşıyorsa optimizasyonu kaldırın. Doğrulama: Desteklenen her şablon aynı soğuk yükleme görsel testini geçer.
Tekrarlı görüntülemeler yavaşlıyor
Muhtemel neden: Her HTML yanıtına çok fazla CSS satır içine alındı ve normal stil dosyası önbelleklemesi kaybedildi. Düzeltme: Kritik kümeyi küçültün ve ilk görüntüleme kazanımlarını tekrarlı görüntüleme aktarımı ve ayrıştırma maliyetiyle karşılaştırın. Doğrulama: Hem soğuk hem sıcak yolculuk iyileşir veya ödünleşim açıkça kabul edilir.
Satır içi stil bloğu yok veya konsolda CSP ihlali görünüyor
Muhtemel neden: Content-Security-Policy style-src politikası, eşleşen nonce veya hash bulunmadığı için satır içi <style> bloğunu engelliyor. Düzeltme: Politikayı unsafe-inline ile gevşetmek yerine nonce/hash üretimini ayıklama işlem hattına bağlayın. Doğrulama: Tarayıcı konsolunda CSP ihlali yoktur ve satır içi blok gevşetilmiş bir yerel politika altında değil, gerçek üretim politikasıyla oluşturulur.
Tema, kişiselleştirilmiş varyant veya etkileşimli durum stillenmemiş görünüyor
Muhtemel neden: Ayıklama yalnızca tek bir temayı, tek bir oturum kapalı/varsayılan durumu veya tek bir rotayı yakaladı; diğer durumlar için gereken basamaklandırma kuralları “kullanılmadı” diye atıldı. Düzeltme: Karanlık/açık tema, kişiselleştirilmiş içerik, odak/açık/hata durumları gibi temsili durumlara göre yeniden ayıklayın ve basamaklandırma sırasını koruyun. Doğrulama: Yalnızca varsayılan değil, desteklenen her durum aynı soğuk yükleme görsel testini geçer.
Teşhis et, ayıkla, teslim et, bakım yap çerçevesini kullanın
- Teşhis: Şelale, Coverage kaydı ve iz ile CSS’nin kritik yol üzerinde olduğunu kanıtlayın. Sunucu süresi veya JavaScript daha büyük kısıtsa durun.
- Ayıkla: Şablonu tek bir ekran görüntüsünün kapsadığını varsaymak yerine gerçek ilk görünümü oluşturmak için gereken kuralları dahil edin. Duyarlı durumları ve dinamik içeriği test edin.
- Teslim et: Küçük kritik kümeyi satır içine alın ve tam stil dosyasını hata güvenli bir desenle yükleyin. CSP’yi, kaynak sırasını ve önbellek davranışını koruyun.
- Bakım yap: Şablonlar veya tasarım belirteçleri değiştiğinde yeniden üretin, sonra görsel ve performans kontrollerini çalıştırın. Güncel olmayan Critical CSS tek seferlik kurulum maliyeti değil, üretim hatasıdır.
Bu çerçeve Critical CSS’yi kanıta dayalı bir sisteme dönüştürür. Bakım adımını atlamak, başlangıçtaki hız kazanımının ileride görsel bir regresyona dönüşmesine neden olur.
Critical CSS için hızlı karar tablosu
| Soru | Sinyal | Eylem |
|---|---|---|
| CSS ilk boyamayı geciktiriyor mu? | Stil dosyaları ölçülen kritik yol üzerinde | Teşhise devam et |
| Başka bir aşama daha mı büyük? | TTFB veya JavaScript baskın | Önce onu düzelt |
| Kritik küme küçük ve kararlı mı? | Şablonun paylaştığı az sayıda ilk görünüm kuralı | Ayıklamayı düşün |
| İlk boyama parlıyor veya kayıyor mu? | Film şeridi veya Layout Shifts izleği regresyon gösteriyor | Eksik düzen-kritik kuralları geri yükle |
| Ertelenen paket güvenli biçimde başarısız oluyor mu? | Gecikmeli yükleme sırasında sayfa kullanılabilir kalıyor | Desteklenen yolculuklarda doğrula |
| Ekip bunu yeniden üretebilir mi? | Ayıklama şablon veya CSS sürümlerinin parçası | Optimizasyonu koru |
| Bakım elle ve kırılgan mı? | Tasarım değişikliklerinden sonra güncel olmayan çıktı gönderiliyor | Daha basit CSS azaltma veya bölmeyi tercih et |
Critical CSS değişikliğinin çalıştığını kanıtlayın
İlk boyama görsel testi
Çalıştırılacak test: Desteklenen kırılma noktalarında değişiklikten önce ve sonra soğuk, yavaşlatılmış bir film şeridi kaydedin. Beklenen sonuç: Yararlı ekran üstü içerik daha erken boyanır ve ilk karesinden itibaren doğru stillenir. Başarısızlık yorumu: Kritik küme eksiktir veya CSS gerçek darboğaz değildir. İzleme penceresi: Tekrarlı çalıştırmalar boyunca hemen. Geri alma tetikleyicisi: Parlamalar, eksik içerik veya yeni düzen kaymaları.
Ertelenen stil dosyası testi
Çalıştırılacak test: Tam stil dosyası yüklenirken Network ve Performance panellerini inceleyin. Beklenen sonuç: Kritik olmayan paket artık ilk boyamayı engellemez ve sonrasında güvenilir biçimde uygulanır. Başarısızlık yorumu: Yükleme deseni hâlâ engelliyor veya başlatmayla yarışıyor. İzleme penceresi: Kasıtlı olarak yavaş bir istek dahil olmak üzere hemen. Geri alma tetikleyicisi: Tam stiller uygulanamaz veya sayfa kontrolleri kullanılamaz hâle gelir.
Şablon regresyonu testi
Çalıştırılacak test: Üretilen kritik kümeyi kullanan her şablon ve kırılma noktası için görsel karşılaştırmalar çalıştırın. Beklenen sonuç: Eksik veya güncel olmayan ilk görünüm kuralı yoktur. Başarısızlık yorumu: Ayıklama kapsamı üretim şablonu varyantlarıyla eşleşmez. İzleme penceresi: İlgili her CSS veya şablon sürümünde. Geri alma tetikleyicisi: Herhangi bir üretim şablonunun yanlış oluşturulması.
Vakit ayırmaya değer kaynaklar
Konuşmalarım
- Sayfa deneyiminde sırada ne var? — SMX Next 2021 (SlideShare) — CSS çalışmalarını erken/kritik bir gruba (kullanılmayanı kaldır → küçült → Critical CSS’yi satır içine al) ve geç/ertelenmiş bir gruba ayırdığım, preload/onload erteleme desenini de ele alan sunum. Bu sayfadaki unsurların nasıl bir araya geldiğini gösteren temel kaynak.
- Sayfa deneyimi güncellemesi — TMC Haziran 2021 (SlideShare) — kritik kaynaklara öncelik verme, lazy-loading ve Critical CSS’yi satır içine alma konularını ele alan daha kapsamlı sayfa deneyimi/Core Web Vitals sunumu.
- Google’ın sayfa deneyimi için arama sinyalleri — SMX Advanced 2021 (SlideShare) — bu dönemdeki rehberlerin çevresindeki sayfa deneyimi/Core Web Vitals bağlamı.
İlgili yazılarım
- Core Web Vitals nedir ve nasıl iyileştirilir? — kapsamlı CWV rehberim (LCP/CLS/INP). Critical CSS’yi adıyla ele almıyor; bu sayfanın doldurduğu boşluk da tam olarak bu. LCP’nin oluşturmayı engelleyen yönünü anlamak için ikisini birlikte okuyun.
- Teknik SEO için başlangıç rehberi — performans ile oluşturmanın daha geniş resimdeki yerini açıklar.
Resmî
- web.dev — Critical CSS’yi ayıklama, Critical codelab’i, kritik olmayan CSS’yi erteleme ve oluşturmayı engelleyen CSS.
- Chrome for Developers — Oluşturmayı engelleyen kaynakları ortadan kaldırma (Lighthouse).
Sektörün çeşitli yerlerinden
- Critical CSS mi? O kadar hızlı değil! (Harry Roberts, csswizardry.com) — Critical CSS’nin ne zaman yardımcı olduğu, ne zaman olmadığı ve bakım/zamanlama yarışı tuzakları hakkındaki temel karşıt görüşlü okuma.
- Critical CSS’yi satır içine almak sitenizi hızlandırır mı? (Matt Zeunert, DebugBear) — önbellek ödünleşimi ve “önce darboğazı teşhis et” argümanı, ölçümlerle.
- Oluşturmayı engelleyen kaynakları belirleme ve azaltma (Abby Hamilton / Dentsu, Search Engine Journal aracılığıyla) — oluşturmayı engelleyen denetimi okuma operasyonel iş akışı.
- Google, CSS sınıf adlarının SEO’yu etkilemediğini doğruluyor (Matt G. Southern, Search Engine Journal) — CSS’nin doğrudan sıralama sinyali olmamasına ilişkin Martin Splitt açıklaması.
- Lighthouse issue #17031 (GitHub) — bir PSI puan güncellemesinden sonra preload edilmiş CSS’nin oluşturmayı engelliyor diye işaretlendiği canlı 2026 raporu; doğru ertelenmiş CSS’niz işaretlendiğinde yararlı.
- Critical CSS’yi anlamak (Smashing Magazine, 2015) — tekniğin ilk çerçevelenişine dair tarihsel bağlam sağlayan klasik açıklama; güncel değildir ama yararlıdır.
Kendinizi sınayın: Critical CSS
Critical CSS’nin ne olduğu, ne zaman kullanılacağı ve ödünleşimleri hakkında beş hızlı soru. Her biri için bir yanıt seçin, sonra kontrol edin.
Değişiklik günlüğü
22 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ş.
22 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ş.
22 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ş.
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.
Tam karşılaştırma kullanılamıyor — bu sürüm için önceki anlık görüntü arşivlenmemiş.