Z E Y M E D Y A

Loading...

Zeymedya; İstanbul merkezli reklam ajansı. SEO, Google Ads, Google Maps ve sosyal medya yönetimiyle ölçülebilir büyüme sağlarız.

Blog
Teknik Rehber
2025

Core Web Vitals 2025: INP, LCP, CLS İyileştirme için Adım Adım Check-List

2025’te Core Web Vitals ( INP, LCP, CLS ) skorlarını kalıcı olarak “Good” seviyesine taşımak için
pratik teşhis akışı, iyileştirme taktikleri ve kontrol listeleri hazırladık.
Hedef: daha hızlı yükleme, akıcı etkileşim, sıfıra yakın layout shift.

  • Alan verisi odaklı iyileştirme: CrUX + GA4 ile gerçek kullanıcı verisine göre optimizasyon.
  • Hedefe yönelik taktikler: INP için JS optimizasyonu, LCP için kritik yol kısaltma, CLS için ölçü tanımlama.
  • Uygulanabilir kontrol listeleri: Her metrik için adım adım yapılacaklar.

INP Hedefi
≤ 200 ms

Gerçek kullanıcı etkileşimlerinde gecikme

LCP Hedefi
≤ 2.5 s

En büyük içerikli boyanın gerçekleşme süresi

CLS Hedefi
≤ 0.1

Toplam layout shift skoru

Core Web Vitals Nedir? 2025 Eşikleri

Core Web Vitals, Google’ın kullanıcı deneyimi odaklı hız sinyalleridir. 2025’te değerlendirmede öne çıkan
üç ana metrik: INP (Interaction to Next Paint), LCP (Largest Contentful Paint) ve CLS (Cumulative Layout Shift).

INP

Kullanıcının etkileşim yapmasından (tıklama, dokunma, klavye) sonra görsel tepki verene kadar geçen süre.

İyi ≤ 200 ms
İyileştirilebilir 200–500 ms
Kötü > 500 ms

LCP

Sayfadaki en büyük içerik öğesinin (görsel, başlık, blok) yüklenme süresi.

İyi ≤ 2.5 s
İyileştirilebilir 2.5–4.0 s
Kötü > 4.0 s

CLS

Beklenmedik layout kaymalarının toplam skorudur; okuma ve etkileşimi bozar.

İyi ≤ 0.1
İyileştirilebilir 0.1–0.25
Kötü > 0.25

Hızlı Teşhis Akışı (Field → Lab)

1CrUX & GSC
Gerçek kullanıcı verisi (origin & URL).
2GA4
Sayfa/cihaz/ülke kırılımları, sorunlu segmentler.
3Lab Araçları
Lighthouse, WebPageTest, DevTools Profiler.
4Fix & Re-test
Küçük parça değiştir, yeniden ölç.

İpucu: Sorunlu URL kümelerini “şablon” bazında ele alın (ürün, kategori, blog yazısı vb.).

INP: Etkileşim Gecikmesini Düşürme

Başlıca Nedenler

  • Ağır JS paketleri, main thread blokajı
  • Senkron 3P script’ler (chat, tag manager aşırılığı)
  • Uzun event handler’lar, DOM reflow döngüleri

Hızlı Kazanımlar

  • Code-split & lazy-load: Route/şablon başına JS paketlerini küçültün.
  • Non-critical JS “defer”: Kullanıcı etkileşimi sonrası yükleyin.
  • Event delegasyonu: Tek bir üst kapsayıcıya dinleyici tanımlayın.
<!-- 1) Kritik olmayan script'leri ertele -->
<script src="/js/widgets.js" defer></script>

<!-- 2) Etkileşim sonrası yükleme (mikro görev) -->
<button id="openChat">Canlı Destek</button>
<script>
  document.getElementById('openChat').addEventListener('click', async () => {
    const { initChat } = await import('/js/chat-widget.js'); // dynamic import
    initChat();
  });
</script>

<!-- 3) Event delegasyonu -->
<ul id="menu">...</ul>
<script>
  document.getElementById('menu').addEventListener('click', (e) => {
    const item = e.target.closest('[data-menu-item]');
    if(!item) return;
    // kısa, saf JS handler
  });
</script>

Hedef: INP’nin en kötü %25 etkileşimindeki tavan gecikmeyi < 200 ms’e çekmek.

LCP: En Büyük İçerikli Boyayı Hızlandırma

Kritik Yol Kısaltma

  • Preconnect ve DNS-prefetch ile istek hazırlığı
  • LCP görselini preload + fetchpriority=”high”
  • Responsive, sıkıştırılmış görseller (WebP/AVIF)
  • Kritik CSS inline, geri kalanı media / async
<!-- Kaynak hazırlığı -->
<link rel="preconnect" href="https://cdn.site.com" crossorigin>
<link rel="dns-prefetch" href="//cdn.site.com">

<!-- LCP görseli preload -->
<link rel="preload" as="image" href="/img/hero@2x.avif" imagesrcset="/img/hero.avif 1x, /img/hero@2x.avif 2x" imagesizes="(max-width: 768px) 100vw, 1200px">

<!-- Görsel bileşeni -->
<img
  src="/img/hero.avif"
  srcset="/img/hero.avif 600w, /img/hero@2x.avif 1200w"
  sizes="(max-width: 768px) 100vw, 1200px"
  width="1200" height="630" fetchpriority="high" decoding="async" alt="Ürün kahraman görseli">

Dikkat: LCP öğesi fonta bağlıysa font-display: swap kullanın; FOIT gecikmeye sebep olur.

CLS: Görsel/Sekme Kaymalarını Önleme

Kaynaklı Problemler

  • Boyut tanımlanmayan görseller/video iframeleri
  • Sonradan yüklenen reklam/widget bileşenleri
  • Web fontları (FOIT/FOUT), dinamik içerik enjeksiyonları

Çözüm Prensipleri

  • Genişlik/yükseklik veya aspect-ratio tanımlayın
  • Reklam/yer tutucu alanları önceden rezerve edin
  • Tipografi için font-display: swap veya optional
/* Görsel/iframe boyutları */
.card .thumb {
  aspect-ratio: 16/9; /* ya da width/height attribute kullanın */
  object-fit: cover;
}

/* Reklam alanı rezerve etme */
.ad-slot {
  min-height: 250px; /* olası yükseklikler: 250, 280, 600 */
}

/* Font yüklemesi */
@font-face{
  font-family:"Inter";
  src:url("/fonts/inter-var.woff2") format("woff2");
  font-display:swap; /* optional da kullanılabilir */
}

Hedef: CLS’yi şablon bazında ≤ 0.1 seviyesinde tutmak.

Ölçümleme & Raporlama (CrUX, GA4, GSC)

Örnek İyileşme (3 Ay)
  • INP: 480 ms → 180 ms
  • LCP: 3.8 s → 2.2 s
  • CLS: 0.22 → 0.06

Not: Örnek veri; CrUX “last 28 days” penceresi baz alınarak raporlanır.

<!-- Web Vitals'ı GA4'e gönderme (örnek) -->
<script type="module">
import {onLCP, onINP, onCLS} from 'https://unpkg.com/web-vitals?module';
function sendToGA4({name, value}) {
  window.gtag && gtag('event', name, {
    value: Math.round(name === 'CLS' ? value * 1000 : value), // CLS * 1000
    event_category: 'web-vitals',
    non_interaction: true
  });
}
onLCP(sendToGA4); onINP(sendToGA4); onCLS(sendToGA4);
</script>

Segment bazlı analiz (ülke/cihaz/şablon) ile darboğazları hızla izole edin.

Teknik Kontrol Listesi (Hızlı Uygulama)

INP

  • JS paketleri < 200KB (gzip/brotli)
  • 3P script’ler defer + lazy
  • Uzun handler < 50 ms

LCP

  • LCP görseli preload + high priority
  • Kritik CSS inline < 10KB
  • CDN + preconnect

CLS

  • Tüm görsellere width/height
  • Reklam/iframe alanı rezerve
  • Font display: swap

Sık Sorulan Sorular


FID yalnızca ilk etkileşimi ölçüyordu; INP tüm etkileşimlerin en kötü gecikmesini temel alarak gerçek deneyimi daha iyi temsil eder.


DevTools Performance paneli ve WebPageTest film şeridiyle LCP öğesini ve zamanını görebilirsiniz. Çoğunlukla hero görseli veya H1 bloğudur.


Boyutları tanımlanmamış görseller/iframe’ler, reklam alanlarının sonradan enjekte edilmesi, web font gecikmesi ve dinamik yüklenen bileşenler.





Leave A Comment