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.
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 });
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 |
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.