Hızlı Açılan Web Siteleri Nasıl Yapılır? Web Sitesi Hızlandırma Rehberi
Bir saniye. Tek bir saniye, web sitenizin başarısını belirleyebilir.
İstatistiklere göre, bir web sitesi 3 saniyede açılmazsa, ziyaretçilerin %40'ı sayfayı kapatıyor. Bu demektir ki, yavaş site = direkt gelir kaybı.
Ancak sadece ziyaretçi kaybı değil. Google da hızlı siteleri tercih ediyor. Hızlı açılan web siteleri daha iyi SEO sıralaması alıyor. Ayrıca, mobil kullanıcılar için (ve günümüzde trafik %60+ mobil'den), hız hayati.
Bu rehberde, web sitenizi hızlandırmanın tüm yollarını öğreneceksiniz.
Web Sitesi Hızı: Temel Konseptler
Core Web Vitals (Google'ın Hız Metrikleri)
Google, web sitesi hızını 3 metric'le ölçüyor:
1. LCP (Largest Contentful Paint):
- Ana görsel veya metin kaç sürede yükleniyor?
- Hedef: < 2.5 saniye
- LCP = açılan sayfadaki en büyük visible element
2. FID (First Input Delay):
- Ziyaretçi tıklamaya tepki kaç sürede?
- Hedef: < 100ms
- Örnek: Button'a tıkla, form submit olana kadar geçen zaman
3. CLS (Cumulative Layout Shift):
- Sayfa yüklenirken elementler ne kadar hareket ediyor?
- Hedef: < 0.1
- Örnek: Text okuyorsun, sonra image yükleniyor, text aşağı kayıyor
Core Web Vitals İyileştirme: Pratik Çözümler
LCP'yi Hızlandırma (< 2.5 saniye)
Problem 1: Büyük Resimler
Sayfa yüklendiğinde en büyük görsel/text LCP'yi belirler. Eğer 5MB fotoğraf koyarsan, açılması uzun sürer.
Çözüm:
<!-- ❌ Yanlış: 5MB image -->
<img src="hero.jpg" alt="Hero"> <!-- ~5MB, açılması 3+ saniye -->
<!-- ✅ Doğru: Optimized image -->
<img src="hero-optimized.jpg" alt="Hero"> <!-- ~50KB, açılması <1 saniye -->
<!-- Önce small boyutlu load, lazy load sonra -->
Image Optimization Tools:
- Squoosh: squoosh.app
- TinyPNG: tinypng.com
- ImageOptim (Mac): imageoptim.com
Hedef: Her image < 200KB (mobil), < 500KB (desktop)
Problem 2: Render-Blocking JavaScript
JavaScript dosyası yüklenmeden sayfa render'lanmıyor.
<!-- ❌ Yanlış: Render-blocking -->
<head>
<script src="app.js"></script>
</head>
<!-- ✅ Doğru: Async/defer -->
<head>
<script src="app.js" async></script>
</head>
<!-- ✅ Veya sitenin sonuna koy -->
<body>
...
<script src="app.js"></script>
</body>
Problem 3: Render-Blocking CSS
CSS dosyası yüklenmeden sayfanın üst kısmı gösterilmiyor.
<!-- ❌ Yanlış: Blocking CSS -->
<link rel="stylesheet" href="styles.css">
<!-- ✅ Doğru: İnline critical CSS -->
<style>
/* Sadece above-fold CSS */
body { background: white; }
.hero { padding: 20px; }
</style>
<link rel="stylesheet" href="styles.css">
Problem 4: Yavaş Server Response (TTFB)
Server yanıt verme süresi > 600ms = problem.
Çözüm:
- Hosting upgrade et (VPS → Cloud)
- Database query'leri optimize et
- Caching implement et (Redis, Memcached)
- CDN kullan (CloudFlare, Akamai)
FID'i Hızlandırma (< 100ms)
Problem: JavaScript Execution Too Long
JavaScript parsing ve execution çok süre alıyor → Button'a tıklamaya tepki yavaş.
Çözüm:
- JavaScript Bundle'ı Küçült:
# Minify JS
npx terser app.js -o app.min.js
# Tree shake (kullanılmayan code'u sil)
# Webpack, Rollup ile yapılabilir
- Web Workers Kullan:
// Main thread işini Web Worker'a yükle
const worker = new Worker('heavy-computation.js');
worker.postMessage(data);
worker.onmessage = (e) => {
console.log(e.data);
};
- Lazy Load Interactive Components:
<!-- Intersection Observer ile, user'a yaklaşınca load -->
<script>
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
loadComponent(entry.target);
}
});
});
observer.observe(document.querySelector('.component'));
</script>
CLS'yi Hızlandırma (< 0.1)
Problem 1: Unsized Images / Ads
Image yüklenmeden, image'ın boyutu bilinmiyor → Text kayıyor.
<!-- ❌ Yanlış: Boyut bilinmiyor -->
<img src="image.jpg" alt="Resim">
<!-- ✅ Doğru: Boyut belirtilmiş -->
<img src="image.jpg" alt="Resim" width="800" height="600">
<!-- ✅ Veya responsive aspect ratio -->
<div style="aspect-ratio: 16 / 9;">
<img src="image.jpg" alt="Resim" style="width: 100%; height: 100%;">
</div>
Problem 2: Dynamically Added Content
Sayfa yüklendikten sonra banner/ad eklenince, layout shift.
<!-- ❌ Yanlış: Banner dinamik eklenince shift -->
<div id="banner"></div> <!-- Boyut bilinmiyor -->
<p>Content...</p>
<!-- ✅ Doğru: Placeholder space reserved -->
<div id="banner" style="height: 100px; background: #EEE;">
<!-- Ad buraya yükleniyor -->
</div>
<p>Content...</p>
Problem 3: Animation Shift
CSS animation'lar layout shift'e neden olabilir.
/* ❌ Yanlış: Transform shift */
.element {
animation: moveDown 1s;
}
@keyframes moveDown {
from { top: 0; }
to { top: 50px; }
}
/* ✅ Doğru: Transform (GPU accelerated) */
.element {
animation: moveDown 1s;
}
@keyframes moveDown {
from { transform: translateY(0); }
to { transform: translateY(50px); }
}
Web Sitesi Hızlandırma: Teknik Çözümler
1. Image Optimization
Adım 1: Format Selection
- WebP: Modern browsers, 25% daha küçük
- AVIF: NextGen format, hatta daha küçük
- JPEG: Compatibility, renkli görseller
- PNG: Transparency gerekiyorsa
<picture>
<source srcset="image.avif" type="image/avif">
<source srcset="image.webp" type="image/webp">
<img src="image.jpg" alt="Fallback">
</picture>
Adım 2: Responsive Images
<img
srcset="
small.jpg 480w,
medium.jpg 1024w,
large.jpg 1920w"
sizes="(max-width: 480px) 100vw, (max-width: 1024px) 80vw, 1200px"
src="medium.jpg"
alt="Responsive"
>
Adım 3: Lazy Loading
<!-- Native lazy load -->
<img src="image.jpg" loading="lazy" alt="Lazy">
<!-- Veya JavaScript Intersection Observer -->
2. Caching Strategies
Browser Caching (Ziyaretçinin Browser'ında):
# .htaccess (Apache)
<FilesMatch "\.(jpg|jpeg|png|gif|css|js)$">
Header set Cache-Control "max-age=31536000"
</FilesMatch>
<FilesMatch "\.(html)$">
Header set Cache-Control "max-age=3600"
</FilesMatch>
Server-Side Caching (Database query'leri cache):
// WordPress'te object caching
wp_cache_set('data_key', $data, '', 3600); // 1 saat
$data = wp_cache_get('data_key');
CDN Caching (CloudFlare, Bunny.net):
- Static assets CDN'de cached
- User'ın coğrafyasına yakın server'dan serve
- Bandwidth azalır, hız artar
3. Minification & Compression
CSS Minify:
npx cssnano styles.css -o styles.min.css
JavaScript Minify:
npx terser app.js -o app.min.js
Gzip Compression (Server'dan):
# .htaccess
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
</IfModule>
Yüzde: CSS 30% küçülür, JS 40% küçülür
4. Code Splitting
Tüm JavaScript'i bir dosyada yükleme, sadece gerekli olanı yükle.
// Webpack configuration
const config = {
entry: './src/index.js',
output: { filename: 'bundle.js' },
optimization: {
splitChunks: {
chunks: 'all'
}
}
};
5. Asynchronous Loading
kritik olmayan resources'ı async yükle.
<!-- Critical: Synchronous -->
<script src="critical.js"></script>
<!-- Non-critical: Async -->
<script src="analytics.js" async></script>
<!-- Deferred: Sayfadan sonra -->
<script src="non-critical.js" defer></script>
WordPress/Breakdance Hızlandırma
Burak'ın Breakdance + WordPress setup'ında:
RankMath + LiteSpeed Kombinasyonu
// LiteSpeed Cache Settings (WP Admin)
- Database optimization: ON
- CSS minify: ON
- JavaScript minify: ON
- HTML minify: ON
- Image lazy load: ON
- QUIC: ON (eğer destekleniyorsa)
Breakdance-Specific Optimization
// Breakdance Builder Settings
- Lazy load images: ON
- Code splitting: ON
- Defer non-critical CSS: ON
- Preload critical resources: ON
Plugin Optimization
// Siparişi düşür (her plugin = overhead)
- Aktif plugin'ler < 20 (ideal: < 15)
- Kullanılmayan plugin'leri deactive et
- Heavy plugin'ler identify et (Query Monitor kullan)
Web Sitesi Hızı Test Etme Tools
1. Google PageSpeed Insights
- pagespeed.web.dev
- Google'ın resmi aracı
- Desktop + Mobile scores
- Specific recommendations
2. GTmetrix
- gtmetrix.com
- Detailed waterfall chart
- Filmstrip view
- Custom recommendations
3. WebPageTest
- webpagetest.org
- Advanced metrics
- Location selection
- Video recording
4. Lighthouse (Built-in Chrome)
- DevTools → Lighthouse tab
- Performance, Accessibility, Best Practices
- Local testing
Web Sitesi Hızı vs Conversion Rate
Hız'ın conversion'a etkisi:
| LCP Time | Conversion Rate | Change |
|---|---|---|
| 1 saniye | 100% (baseline) | - |
| 2 saniye | 85% | -15% |
| 3 saniye | 72% | -28% |
| 5 saniye | 55% | -45% |
| 10 saniye | 30% | -70% |
Örnek: 10.000 aylık ziyaretçi
- Hızlı site (1s): 100 conversion
- Yavaş site (5s): 55 conversion
- Kayıp: 45 lead/ay = 225.000 TL/ay
Web Sitesi Hızlandırma Checklist
- [ ] Resimler optimized (< 200KB mobil, < 500KB desktop)
- [ ] LCP < 2.5 saniye
- [ ] FID < 100ms
- [ ] CLS < 0.1
- [ ] Render-blocking JS/CSS minimize
- [ ] Lazy loading implemented
- [ ] Caching strategy (browser + server + CDN)
- [ ] JavaScript minified & code split
- [ ] Gzip compression enabled
- [ ] Image formats modern (WebP, AVIF)
- [ ] TTFB < 600ms
- [ ] Plugin'ler minimal
- [ ] Database optimized
- [ ] CDN configured
- [ ] Lighthouse score > 90
Sonuç: Web Sitesi Hızı = Business Metric
Hızlı site:
- %40 daha fazla ziyaretçi kalıyor
- %30-50 daha fazla conversion
- %20 daha iyi Google ranking
- %25 daha az bounce rate
Hızlı açılan web sitesinin maliyeti: 0 TL (optimization) Hızlı açılan web sitesinin kazancı: Çok büyük
Web sitesi hızlandırmada yardımcı olabiliriz. İletişime geçin.