Site Hızı Nasıl Artırılır? Sayfa Hızı Optimizasyonu Rehberi (2026)
Web sitesi hızı nasıl artırılır? Core Web Vitals, LCP, CLS ve INP optimizasyonu için teknik yöntemler. Görseller, JavaScript, CSS ve sunucu optimizasyonu adım adım.
İçindekiler
Google, 2021'den itibaren Core Web Vitals'ı resmi sıralama faktörü olarak kabul etti. Yavaş bir site hem kullanıcı kaybettirir hem de sıralamayı düşürür. Her 100ms gecikme, dönüşüm oranını %7 azaltır (Amazon araştırması). Bu rehberde site hızını artırmanın somut yollarını anlatıyoruz.
Core Web Vitals Nedir?
Google'ın kullanıcı deneyimini ölçtüğü üç temel metrik:
| Metrik | Ölçtüğü | İyi Skor |
|---|---|---|
| LCP (Largest Contentful Paint) | Görünür alandaki en büyük içerik yüklenme süresi | < 2.5 saniye |
| INP (Interaction to Next Paint) | Kullanıcı etkileşimine tepki süresi | < 200ms |
| CLS (Cumulative Layout Shift) | Beklenmedik düzen kaymalarının toplamı | < 0.1 |
Bu üç metriğin yanında First Contentful Paint (FCP) ve Time to First Byte (TTFB) de önemlidir.
Site Hızını Ölçme Araçları
Optimizasyona başlamadan önce mevcut durumu ölçün:
Google PageSpeed Insights
pagespeed.web.dev — Google'ın resmi aracı. Hem lab (simüle) hem alan (gerçek kullanıcı) verisi gösterir. Core Web Vitals skorları ve somut iyileştirme önerileri sunar.
Google Search Console
Deneyim > Core Web Vitals bölümü, sitenizin tüm URL'lerini "İyi", "İyileştirme gerektirir", "Zayıf" olarak sınıflandırır. Gerçek Chrome kullanıcı verisi (CrUX) kullanır.
WebPageTest
webpagetest.org — Gelişmiş waterfall analizi. Her kaynağın yüklenme sırasını ve süresini gösterir.
Chrome DevTools
F12 → Lighthouse sekmesi → "Analyze page load" — Yerel test için. Incognito modda çalıştırın (uzantılar skoru etkiler).
1. Görsel Optimizasyonu
Sayfaların %60-70'ini oluşturan görsel boyutu en kolay kazanım alanıdır.
Modern Formatlar Kullanın
<!-- Eski yöntem -->
<img src="resim.jpg" alt="...">
<!-- Modern yöntem: WebP + fallback -->
<picture>
<source srcset="resim.webp" type="image/webp">
<source srcset="resim.avif" type="image/avif">
<img src="resim.jpg" alt="...">
</picture>
Format karşılaştırması:
- JPEG → WebP: ortalama %25-35 küçülme
- PNG → WebP: ortalama %26 küçülme
- WebP → AVIF: ortalama %20 ek küçülme
Lazy Loading
Ekran dışındaki görselleri geciktirerek yükleyin:
<!-- İlk ekranda görünen: loading="eager" (varsayılan) -->
<img src="hero.webp" alt="..." loading="eager">
<!-- Ekran dışındaki: loading="lazy" -->
<img src="galeri.webp" alt="..." loading="lazy">
Önemli: Hero görseline loading="lazy" eklemeyin — LCP metriğini kötüleştirir.
Boyutları Belirtin
Tarayıcı görselin boyutunu bilmeden layout hesaplayamaz → CLS (düzen kayması) artar:
<img src="resim.webp" alt="..." width="800" height="600">
Görsel Boyutu
Gerçek kullanım boyutundan büyük görsel yüklemeyin:
❌ 4000×3000 piksel fotoğrafı thumbnail olarak kullanmak
✅ Kullanım boyutunda export: 400×300 piksel thumbnail için 400×300 görsel
Araçlar: sharp (Node.js), Squoosh.app, ImageOptim (Mac).
2. JavaScript Optimizasyonu
JavaScript hem indirme hem parse hem execute maliyeti getirir — performanstaki en ağır yük.
Kullanılmayan Kodu Temizleyin
Chrome DevTools → Coverage (Ctrl+Shift+P → "Coverage") hangi JS/CSS satırlarının çalıştırıldığını gösterir. Kullanılmayan kodu tree shaking ile eleyin.
Kritik Olmayan JS'i Geciktirin
<!-- Hemen çalışması gerekmeyen scriptler -->
<script src="analytics.js" defer></script>
<script src="chat-widget.js" async></script>
defer: DOM hazır olduktan sonra çalışır, sıralıasync: İndirilir inmez çalışır, sırasız
Code Splitting
Büyük JavaScript bundle'ı sayfa başına bölerek yükleyin. Modern framework'ler (Next.js, Nuxt.js) otomatik yapar, ama manual lazy import da gerekebilir:
// Nuxt.js'de dinamik import
const HeavyComponent = defineAsyncComponent(() =>
import('./HeavyComponent.vue')
)
Third-Party Script Denetimi
Google Tag Manager, Facebook Pixel, canlı sohbet widget'ları yüzlerce KB ekleyebilir. Her third-party script'in ağırlığını ölçün:
Chrome DevTools → Network → "third-party" filtreleme
Gereksiz scriptleri kaldırın. Kritik olanları defer ile yükleyin.
3. CSS Optimizasyonu
Kullanılmayan CSS'i Kaldırın
PurgeCSS veya Tailwind CSS'in built-in purge özelliği, kullanılmayan CSS sınıflarını build aşamasında siler.
CSS'i Kritik ve Kritik Olmayan Olarak Bölün
<!-- Critical CSS: inline, hızlı -->
<style>
/* Yalnızca ilk ekranın stilleri */
body { font-family: sans-serif; }
.hero { ... }
</style>
<!-- Non-critical: gecikmeli -->
<link rel="preload" href="styles.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
CSS Dosyasını Minify Edin
Build araçları (Vite, Webpack) production'da otomatik minify yapar. Manuel yapıyorsanız cssnano kullanın.
4. Sunucu Optimizasyonu
TTFB (Time to First Byte)
Sunucunun ilk byte'ı göndermesi 800ms'nin altında olmalıdır. Yavaş TTFB nedenleri:
- Yavaş hosting/sunucu
- Veritabanı sorguları optimize edilmemiş
- Önbellekleme yok
Önbellekleme (Caching)
# Apache: Statik dosyalar için uzun cache
<FilesMatch "\.(js|css|png|jpg|webp|woff2)$">
Header set Cache-Control "max-age=31536000, immutable"
</FilesMatch>
# HTML: Kısa veya no-cache
<FilesMatch "\.html$">
Header set Cache-Control "no-cache, must-revalidate"
</FilesMatch>
CDN Kullanımı
Content Delivery Network, statik dosyaları kullanıcıya yakın sunuculardan dağıtır. Türkiye'deki kullanıcı için İstanbul CDN node'u, Almanya'daki için Frankfurt node'u kullanır.
Önerilen CDN'ler: Cloudflare (ücretsiz plan güçlü), BunnyCDN, Fastly.
HTTP/2 veya HTTP/3
Modern hosting'ler HTTP/2'yi varsayılan açar. HTTP/2 çoklu istek paralelleştirmesi yapar (multiplexing), HTTP/1.1'e göre çok daha hızlıdır.
Kontrol: Chrome DevTools → Network → Protocol sütunu. h2 görünüyorsa HTTP/2 aktif.
Gzip / Brotli Sıkıştırma
Text tabanlı dosyaları (HTML, CSS, JS) sunucuda sıkıştırın:
# Nginx: Brotli + Gzip
brotli on;
brotli_types text/plain text/css application/javascript;
gzip on;
gzip_types text/plain text/css application/javascript;
Brotli, Gzip'ten ~%15-20 daha iyi sıkıştırır.
5. LCP Optimizasyonu
LCP genellikle hero görseli veya büyük bir başlık bloğudur.
Preload Hero Görseli
<head>
<link rel="preload" as="image" href="hero.webp" fetchpriority="high">
</head>
Bu, tarayıcının hero görselini diğer kaynaklardan önce indirmesini sağlar.
fetchpriority Attribute
<!-- Hero görsel: yüksek öncelik -->
<img src="hero.webp" fetchpriority="high" alt="...">
<!-- Galeri: düşük öncelik -->
<img src="galeri.webp" fetchpriority="low" loading="lazy" alt="...">
Sunucu Tarafı Render (SSR)
Client-side render (CSR) uygulamalarında LCP, JavaScript çalıştıktan sonra gerçekleşir — bu yavaştır. SSR veya Static Site Generation (SSG) ile HTML sunucudan hazır gelir → LCP hızlanır.
6. CLS Optimizasyonu
Düzen kaymalarının başlıca nedenleri:
Görsel Boyutu Belirtmemek
❌ <img src="banner.jpg" alt="...">
✅ <img src="banner.jpg" alt="..." width="1200" height="400">
Web Font Yüklemesi
Font yüklenene kadar tarayıcı fallback font kullanır, font gelince layout kayar.
/* font-display: swap yerine optional kullanın */
@font-face {
font-family: 'CustomFont';
font-display: optional; /* Yoksa sistem fontunu kullan, kayma olmaz */
}
/* Veya swap ile preload kombinasyonu */
@font-face {
font-display: swap;
}
<link rel="preload" href="/fonts/font.woff2" as="font" type="font/woff2" crossorigin>
Dinamik İçerik
Reklam alanları, banner'lar için önceden yer ayırın:
.ad-container {
min-height: 250px; /* Reklam gelene kadar alan ayrılmış */
}
7. Font Optimizasyonu
Sistem Fontlarını Tercih Edin
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}
0 KB font yüklemesi → en hızlı seçenek.
Sadece Gerekli Karakter Kümelerini Yükleyin
Latin ve Türkçe için subset:
@font-face {
font-family: 'OpenSans';
src: url('opensans-latin-ext.woff2') format('woff2');
unicode-range: U+0000-00FF, U+011E, U+011F, U+0130, U+0131, U+015E, U+015F;
}
WOFF2 Formatı
WOFF2, WOFF'dan ~%30 daha küçük. Modern tarayıcıların tamamı destekler.
Hız Optimizasyonu Öncelik Sırası
- Görsel boyutlarını belirtin → CLS düzeltmesi (hızlı)
- Hero görselini preload yapın → LCP iyileştirmesi (hızlı)
- Görselleri WebP/AVIF'e dönüştürün → Boyut azaltma (orta)
- Lazy loading → Ekran dışı yük azaltma (hızlı)
- Third-party script'leri defer/async → JavaScript yükünü azaltma (orta)
- CDN ekleyin → TTFB azaltma (orta-zor)
- Önbellekleme konfigürasyonu → Tekrar ziyareti hızlandırma (orta)
Sık Sorulan Sorular
PageSpeed skoru 90+ olmazsa Google sıralamam düşer mi?
PageSpeed lab skoru değil, gerçek kullanıcı deneyimi (Core Web Vitals — CrUX) sıralamayı etkiler. Yüksek lab skoru genellikle iyi alan verisiyle korelasyon gösterir, ama birebir değildir. CWV'de "İyi" kategorisine girmek hedef olmalıdır.
Mobil mü masaüstü mü optimize etmeliyim?
Google, mobil-öncelikli indeksleme kullandığından mobil hız önceliklidir. Ancak mobili optimize etmek genellikle masaüstünü de iyileştirir.
Hız iyileştirmeleri ne zaman etkisini gösterir?
GSC Core Web Vitals raporunun güncellemesi 28 gün penceresiyle çalışır. İyileştirme yaptıktan sonra 4-6 hafta bekleyin.
Sitenizin Performansını Ölçün
Ücretsiz SEO analiz aracımız Core Web Vitals skorlarını, PageSpeed verilerini ve performans sorunlarını otomatik olarak raporlar.
İlgili içerikler: Core Web Vitals Nedir? • Google Search Console Kurulumu • Sitemap XML Nedir?
Sitenizin SEO Skorunu Öğrenin
Bu rehberi uyguladıktan sonra sitenizi analiz edin ve ilerlemenizi ölçün.
Ücretsiz Analiz Et →