irdaweb Bilgi Teknolojileri
Telefon numaramız +90 541 209 02 05
E-posta adresimiz [email protected]
Konu 05 · Performans & Web Vitals

Performans ve Web Vitals: kullanıcının hissettiğini birlikte ölçelim.

LCP, INP ve CLS — Google'ın kullanıcı deneyimini özetlediği üç sinyal. Sayfanızın hızını saha verisiyle anlamak, performans bütçesi koymak ve doğru yerden iyileştirmeye başlamak için bir başvuru rehberi hazırladık.

01 — Üç metrik

Core Web Vitals — üç soru, üç sinyal.

Her metrik tek bir soruya cevap arar: "Ne zaman göründü?", "Tepki verdi mi?" ve "Sayfa yerinde mi durdu?". Üçü birlikte, kullanıcının sayfanızla geçirdiği ilk saniyelerin bir özetini verir. Eşik değerler Google'ın saha verisinden çıkarılmıştır ve sıralama sinyali olarak da kullanılır.

Metrik · 01 LCP

Largest Contentful Paint

Görünür alandaki en büyük içerik öğesinin boyandığı an. Çoğu sayfada hero görseli, başlık ya da öne çıkan blok bu rolü üstlenir.

İyi
≤ 2.5 sn
Geliştirilmeli
≤ 4 sn
Zayıf
> 4 sn
Metrik · 02 INP

Interaction to Next Paint

Bir kullanıcı etkileşiminden (tık, dokunuş, tuş) sonra ekranın bir sonraki boyamaya kadar geçen süre. Mart 2024'te FID'in yerini aldı; tüm etkileşimleri kapsar.

İyi
≤ 200 ms
Geliştirilmeli
≤ 500 ms
Zayıf
> 500 ms
Metrik · 03 CLS

Cumulative Layout Shift

Sayfa yüklenirken görsel öğelerin beklenmedik biçimde yer değiştirmesinin toplam puanı. Geç gelen reklam, ölçüsü belirsiz görsel, geç yüklenen yazı tipi en yaygın kaynaklardır.

İyi
≤ 0.1
Geliştirilmeli
≤ 0.25
Zayıf
> 0.25
İpucu. Google Search, bir sayfayı "iyi" sayabilmek için üç metriğin de eşiğin altında olmasını arar. Sadece bir metriği iyileştirip diğerlerini ihmal etmek, saha skorunuzu kırmızıda tutmaya yeter.
02 — Saha & laboratuvar

İki tür veri, iki ayrı hikâye.

Aynı sayfaya farklı yerden bakan iki ölçüm. Saha verisi gerçek kullanıcılardan toplanır ve sıralamayı etkiler; laboratuvar verisi kontrollü ortamdaki tek bir koşudur. İkisinin de işi farklıdır ve birinin yerine diğeri konulamaz.

CrUX p75 — son 28 gün
# pagespeed.web.dev → irdaweb.com
LCP  p75  1.9 s   iyi
INP  p75  148 ms  iyi
CLS  p75  0.14    geliştirilmeli

# lighthouse — yerel koşu, mobil profil
Performance  92 / 100
LCP  1.4 s   (simülasyon)
TBT  120 ms  (INP'e yaklaşık)
CLS  0.02    (tek koşu)
1
Saha verisi (RUM / CrUX)
Gerçek ziyaretçilerin tarayıcılarından gelen ölçümler. Chrome User Experience Report (CrUX) son 28 günü p75 olarak özetler — kullanıcıların dörtte üçü bu değerin altında bir deneyim yaşamış demektir. Google sıralamasını bu veriyle besler.
2
Laboratuvar verisi (Lighthouse)
Tek bir koşuda, simüle edilen mobil cihaz ve ağ profili altında alınan ölçüm. Hata ayıklamak ve regresyon yakalamak için biçilmiş kaftan; ama tek bir koşu kullanıcı çeşitliliğini yansıtmaz.
3
İkisini birlikte okumak
Saha skoru kötü ama laboratuvar iyi mi? Cihaz, ağ ya da kullanıcı yolu farklıdır — gerçek kullanıcıyla aynı koşulu simüle edin. İkisi de kötü mü? Sorun belirgin; laboratuvarda bulup düzeltebilirsiniz.
03 — Performans bütçesi

Yeni bir özellik koymadan önce tartılan şey.

Bütçe, sayfanızın bir kaynağı (görsel, JS, font) ne kadar yüklenebilir sorusuna verdiğiniz sayısal cevaptır. Ekibin geri kalanı için hayır demeyi kolaylaştırır; CI'de eşik aşılırsa sürüm durur. Aşağıdaki değerler 3G/4G karışık mobil için yaygın bir başlangıç noktasıdır.

HTML
≤ 50 KB (gzip)
İlk yanıtın TTFB altında dönmesi LCP'yi doğrudan etkiler. Server-side render edilen marketing sayfalarında çoğu zaman 20–30 KB yeterlidir.
CSS
≤ 60 KB
Görünür alana özel kritik CSS'i inline edin; gerisini ertelenmiş yükleyin. Kullanılmayan stilleri PurgeCSS / Tailwind JIT temizler.
JavaScript
≤ 170 KB (gzip)
Etkileşim sürelerinin (INP) en büyük düşmanı uzun ana iş parçacığı görevleridir. Üçüncü taraf script'leri ölçün, async/defer kullanın.
Görseller
≤ 500 KB / sayfa
AVIF veya WebP tercih edin; srcset ile cihaz başına uygun boyut sunun; hero için preload kullanın.
Yazı tipleri
≤ 2 dosya, 100 KB
font-display: swap, woff2 ve self-hosting kombinasyonu CLS'i ve FOUT'u azaltır.
Üçüncü taraf
≤ 4 origin
Reklam, analytics, chat, AB test — her biri kendi engelleme süresini getirir. Kritik olmayanları kullanıcı etkileşimi sonrası yükleyin.
Toplam ağırlık
≤ 1 MB / sayfa
Bütçe aşıldığında refleks: önce "hangisini çıkarabiliriz?", sonra "hangisini ertelenmiş yükleyebiliriz?".
04 — İyileştirme adımları

Performans, tek hamleyle değil küçük adımlarla kazanılır.

Saha verisinden başlayın: en kötü metriği bulun, onu üreten sayfayı ve cihazı belirleyin. Sonra büyük etki / düşük maliyet işlerden başlayarak ilerleyin. Aşağıdaki sıra çoğu projede ilk değer üreten yoldur.

Her adımdan sonra CrUX güncellenene kadar ~28 gün beklemeniz gerekebilir; o yüzden değişiklikleri tek tek değil, küçük gruplar hâlinde yayınlayın.

  1. 01

    Hero görselini optimize edin

    LCP öğesi çoğu zaman buradan gelir. AVIF veya WebP, doğru boyut, fetchpriority="high" ve preload kullanın. Lazy-load'u hero'ya değil, görünür alanın altındakilere uygulayın.

  2. 02

    Yazı tipini erken bildirin

    <link rel="preload" as="font" crossorigin>, font-display: swap ve self-hosted woff2; CLS'i azaltır, FOUT'u kontrol altına alır.

  3. 03

    Görsel ve iframe'lere ölçü verin

    width + height ya da aspect-ratio ile yerleri rezerve edin; geç gelen içerik sayfayı kaydırmasın.

  4. 04

    JavaScript'i bölün ve erteleyin

    Üçüncü taraf script'leri kullanıcı etkileşimi sonrası yükleyin. Route-level kod bölme; ana iş parçacığı boş kaldığında çalışacak işleri requestIdleCallback ile zamanlayın. INP'yi en çok bu adım iyileştirir.

  5. 05

    Edge cache ve sıkıştırma

    Statik varlıklar için uzun cache, HTML için kısa cache + revalidate. Brotli sıkıştırma, HTTP/2 ya da HTTP/3 ve TLS oturum yeniden kullanımı — TTFB ve LCP'yi birlikte düşürür. Bu konunun derinine için bkz. CDN, DDoS & Edge; TLS tarafı için TLS, SSL ve Sertifikalar.

  6. 06

    Ölçün, regresyonu CI'de yakalayın

    Lighthouse CI veya WebPageTest ile kritik sayfalara bütçe koyun; bütçe aşıldığında build başarısız olsun. Saha tarafında CrUX dashboard'unu haftalık takip edin.

05 — Sık karıştırılanlar

Birbirine benzeyenler ama aynı olmayanlar.

LCP vs. FCP

FCP (First Contentful Paint) herhangi bir içeriğin ilk göründüğü an; LCP ise görünür alandaki en büyük içerik öğesinin boyandığı an. FCP iyi olsa bile LCP yavaş olabilir — sayfanın iskeletinin değil, gerçek içeriğinin gelmesini ölçer.

INP vs. FID

FID (First Input Delay) sadece sayfadaki ilk etkileşimin gecikmesini ölçerdi. INP Mart 2024'te onun yerine geçti ve sayfanın yaşam süresi boyunca tüm etkileşimlerin en kötülerinden birini raporlar. Daha temsili, ama daha zor iyileştirilir.

CrUX vs. Lighthouse

CrUX gerçek Chrome kullanıcılarından toplanan saha verisidir, son 28 günü kapsar ve sıralamayı etkiler. Lighthouse kontrollü ortamda tek bir koşunun raporudur; sıralamayı etkilemez ama regresyon yakalamak için vazgeçilmezdir.

TTFB vs. LCP

TTFB (Time To First Byte) sunucunun ilk byte'ı göndermesine kadar geçen süredir; LCP en büyük içeriğin ekranda boyanmasına kadar geçer. Yavaş TTFB neredeyse her zaman yavaş LCP demektir; iyileştirme genelde sunucu/CDN tarafından başlar.

Backend süresi vs. Frontend süresi

Kullanıcı için ikisi de aynı bekleme hissidir, ama kökenleri ayrıdır. Backend süresi sunucu / veritabanı yanıt zamanı; frontend süresi tarayıcının HTML, CSS, JS, görsel ve font işleme zamanı. Bir profil çıkarmadan hangisinin baskın olduğunu varsaymayın.

Birinci el kaynaklar

Konuyu tanımlayan resmi belgeler ve referans yayınlar.

Sıradaki adım

Sayfanızın saha skorunu birlikte okuyalım.

CrUX raporu, Lighthouse koşusu ve hangi adımdan başlanması gerektiği üzerine küçük bir oturum — bizimle konuşmak ister misiniz?