İçeriğe geç
Performance

Web Performance Temelleri: Hız Neden Önemli?

Tarık Tunç
Web Performance Temelleri: Hız Neden Önemli?

Web Performance Temelleri: Hız Neden Önemli?

Web performansı, modern dijital dünyada kullanıcı deneyiminin en kritik bileşenlerinden biridir. Araştırmalar, sayfa yükleme süresindeki her 1 saniyelik artışın dönüşüm oranını %7 düşürdüğünü göstermektedir. Google'ın kendi verilerine göre, mobil kullanıcıların %53'ü 3 saniyeden uzun sürede yüklenmeyen siteleri terk ediyor. Performans yalnızca teknik bir metrik değil, doğrudan gelir ve kullanıcı memnuniyetini etkileyen iş odaklı bir konudur.

Performansın İş Etkisi

Web performansı üç temel alanda doğrudan etki yaratır:

  • Kullanıcı Deneyimi (UX): Hızlı siteler daha düşük bounce rate ve daha yüksek engagement oranlarına sahiptir.
  • SEO ve Arama Sıralaması: Google, Core Web Vitals metriklerini sıralama faktörü olarak kullanır. Yavaş siteler arama sonuçlarında geri düşer.
  • Dönüşüm ve Gelir: Amazon'un hesaplamalarına göre sayfa yükleme süresindeki 100ms'lik iyileşme, yıllık gelirde %1'lik artışa karşılık gelir.
Bilgi: Google'ın 2021'de başlattığı Page Experience güncellemesi ile Core Web Vitals metrikleri (LCP, INP, CLS) resmi sıralama faktörleri haline gelmiştir. Performans artık sadece teknik borç değil, SEO stratejisinin ayrılmaz bir parçasıdır.

Performans Metrikleri: Neyi Ölçmeliyiz?

Web performansını anlamak için doğru metrikleri ölçmemiz gerekir. Bu metrikler kullanıcının gerçek deneyimini yansıtmalıdır.

Yükleme metrikleri:

  • Time to First Byte (TTFB): Sunucunun ilk byte'ı gönderme süresi. 800ms altı iyi kabul edilir.
  • First Contentful Paint (FCP): İlk görsel içeriğin ekrana çizilmesi. 1.8 saniye altı hedeflenmelidir.
  • Largest Contentful Paint (LCP): En büyük içerik öğesinin render süresi. 2.5 saniye altı "iyi" kabul edilir.

Etkileşim metrikleri:

  • Interaction to Next Paint (INP): Kullanıcı etkileşimlerinin yanıt süresi. 200ms altı hedeflenmelidir.
  • Total Blocking Time (TBT): Ana thread'in bloke olduğu toplam süre.

Görsel kararlılık:

  • Cumulative Layout Shift (CLS): Sayfadaki beklenmeyen layout kaymaları. 0.1 altı "iyi" kabul edilir.

Performance API ile Ölçüm

Tarayıcının yerleşik Performance API'si ile temel metrikleri programatik olarak ölçebilirsiniz:

// Navigation Timing ile sayfa yükleme metriklerini ölçme
function measurePageLoad() {
  const [entry] = performance.getEntriesByType('navigation');

  if (entry) {
    console.log('DNS Çözümleme:', entry.domainLookupEnd - entry.domainLookupStart, 'ms');
    console.log('TCP Bağlantı:', entry.connectEnd - entry.connectStart, 'ms');
    console.log('TTFB:', entry.responseStart - entry.requestStart, 'ms');
    console.log('DOM Hazır:', entry.domContentLoadedEventEnd - entry.fetchStart, 'ms');
    console.log('Sayfa Yükleme:', entry.loadEventEnd - entry.fetchStart, 'ms');
  }
}

// Sayfa tamamen yüklendikten sonra ölç
window.addEventListener('load', () => {
  setTimeout(measurePageLoad, 0);
});

LCP Ölçümü ile PerformanceObserver

Core Web Vitals metriklerini gerçek zamanlı olarak izlemek için PerformanceObserver API'sini kullanabilirsiniz:

// LCP (Largest Contentful Paint) ölçümü
const lcpObserver = new PerformanceObserver((entryList) => {
  const entries = entryList.getEntries();
  const lastEntry = entries[entries.length - 1];

  console.log('LCP:', lastEntry.startTime, 'ms');
  console.log('LCP Öğesi:', lastEntry.element);

  // Analytics'e gönder
  sendToAnalytics({
    metric: 'LCP',
    value: lastEntry.startTime,
    element: lastEntry.element?.tagName
  });
});

lcpObserver.observe({ type: 'largest-contentful-paint', buffered: true });

// CLS (Cumulative Layout Shift) ölçümü
let clsValue = 0;
const clsObserver = new PerformanceObserver((entryList) => {
  for (const entry of entryList.getEntries()) {
    if (!entry.hadRecentInput) {
      clsValue += entry.value;
    }
  }
  console.log('CLS:', clsValue);
});

clsObserver.observe({ type: 'layout-shift', buffered: true });
İpucu: Google'ın web-vitals kütüphanesi, tüm Core Web Vitals metriklerini kolayca ölçmenizi sağlar. Kendi ölçüm kodunuzu yazmak yerine bu kütüphaneyi kullanmanız önerilir: npm install web-vitals

Temel Performans Optimizasyon Stratejileri

Web performansını iyileştirmek için sistematik bir yaklaşım benimsenmelidir. İşte temel stratejiler:

1. Ağ optimizasyonu:

  • HTTP isteklerini minimize edin
  • Dosyaları sıkıştırın (Gzip/Brotli)
  • CDN kullanın
  • HTTP/2 veya HTTP/3 protokolüne geçin

2. Render optimizasyonu:

  • Critical CSS'i inline edin
  • JavaScript'i defer veya async ile yükleyin
  • DOM boyutunu küçük tutun

3. Asset optimizasyonu:

  • Görselleri modern formatlarda (WebP, AVIF) sunun
  • Lazy loading uygulayın
  • Font yükleme stratejisi belirleyin

web-vitals Kütüphanesi ile Hızlı Entegrasyon

Google'ın resmi web-vitals kütüphanesi ile tüm metrikleri birkaç satır kodla ölçebilirsiniz:

import { onLCP, onINP, onCLS, onFCP, onTTFB } from 'web-vitals';

function sendToAnalytics(metric) {
  const body = JSON.stringify({
    name: metric.name,
    value: metric.value,
    rating: metric.rating,  // 'good', 'needs-improvement', 'poor'
    delta: metric.delta,
    id: metric.id,
    navigationType: metric.navigationType
  });

  // Beacon API ile veri kaybını önle
  if (navigator.sendBeacon) {
    navigator.sendBeacon('/api/analytics', body);
  } else {
    fetch('/api/analytics', { body, method: 'POST', keepalive: true });
  }
}

// Tüm Core Web Vitals metriklerini izle
onLCP(sendToAnalytics);
onINP(sendToAnalytics);
onCLS(sendToAnalytics);
onFCP(sendToAnalytics);
onTTFB(sendToAnalytics);

Performans Bütçesi Kavramı

Performans bütçesi, sayfanızın aşmaması gereken performans limitlerini tanımlar. Bu limitler ekip genelinde paylaşılır ve CI/CD pipeline'ına entegre edilir.

Metrik İyi İyileştirme Gerekli Kötü
LCP ≤ 2.5s 2.5s - 4.0s > 4.0s
INP ≤ 200ms 200ms - 500ms > 500ms
CLS ≤ 0.1 0.1 - 0.25 > 0.25
FCP ≤ 1.8s 1.8s - 3.0s > 3.0s
TTFB ≤ 800ms 800ms - 1800ms > 1800ms
Uyarı: Performans optimizasyonu sürekli bir süreçtir, tek seferlik bir görev değildir. Yeni özellikler eklendikçe performans regresyonları oluşabilir. Otomatik performans testlerini CI/CD pipeline'ınıza entegre ederek sürekli izleme yapın.

Performans Kültürü Oluşturma

Teknik optimizasyonlar kadar önemli olan bir diğer konu da ekip genelinde performans bilincinin oluşturulmasıdır. Performans dashboardları oluşturun, sprint hedeflerine performans metriklerini ekleyin ve code review sürecinde performans etkisini değerlendirin. Her yeni özellik, performans bütçesi dahilinde değerlendirilmelidir.

Performans iyileştirmesi iteratif bir süreçtir: Ölç, analiz et, optimize et ve tekrar ölç. Bu döngüyü sürekli tekrarlayarak kullanıcılarınıza en iyi deneyimi sunabilirsiniz.

Sonuç

Web performansı, kullanıcı deneyimi, SEO ve iş metrikleri üzerinde doğrudan etkiye sahip kritik bir konudur. Doğru metrikleri ölçmek, performans bütçesi belirlemek ve sistematik optimizasyon stratejileri uygulamak başarının anahtarıdır. Bu serinin devamında Core Web Vitals, Lighthouse analizi, görsel optimizasyon ve diğer ileri konuları detaylı olarak ele alacağız.

Kaynaklar

İlgili Yazılar