Header Ads Widget

Ticker

6/recent/ticker-posts

WordPress Speed Optimization 2025: CDN, Caching ve Database Optimization Teknikleri

WordPress, dünya çapında en popüler içerik yönetim sistemi olmasına rağmen, yanlış yapılandırıldığında yavaş yüklenen siteler yaratabilir. 2025 yılında Google'ın Core Web Vitals'ı SEO ranking faktörü olarak kullanması, WordPress site hızlandırma işlemlerini daha da kritik hale getirmiştir. Bu kapsamlı rehberde, WordPress sitenizi maksimum performansa çıkarmak için ihtiyacınız olan tüm teknikleri öğreneceksiniz.

WordPress Hosting Seçimi: Performansın Temeli

Shared Hosting vs VPS vs Dedicated Server

Shared Hosting Sınırlamaları:

  • CPU ve RAM kaynaklarının paylaştırılması
  • Sunucu seviyesi optimizasyonların kısıtlı olması
  • Traffic spike durumlarında performans düşüşü

VPS Hosting Avantajları:

  • Dedicated kaynaklara erişim
  • Root erişimi ile server-level optimizasyonlar
  • Ölçeklenebilir kaynak yönetimi
  • Önerilen VPS sağlayıcıları: DigitalOcean, Vultr, Linode

Dedicated Server Senaryoları:

  • Yüksek trafikli enterprise siteler
  • E-ticaret platformları
  • Tam kontrol gereken özel uygulamalar

Hosting Performans Kriterleri

bash
# Server response time kontrolü
curl -o /dev/null -s -w "Total time: %{time_total}s\n" https://yoursite.com

# MySQL performans testi
mysql> SELECT BENCHMARK(1000000, SHA1('test'));

CDN Implementation Rehberi

Cloudflare Konfigürasyonu

Temel Ayarlar:

  1. SSL/TLS → Full (Strict) moduna geçiş
  2. Speed → Optimization → Auto Minify aktifleştirme
  3. Caching → Browser Cache TTL → 1 yıl
  4. Network → HTTP/2 ve HTTP/3 aktivasyonu

Gelişmiş Cloudflare Optimizasyonları:

javascript
// Page Rules örneği
Cache Level: Cache Everything
Browser Cache TTL: a year
Edge Cache TTL: a month

// Workers ile critical CSS inline etme
addEventListener('fetch', event => {
  if (event.request.url.includes('.css')) {
    event.respondWith(handleCSSRequest(event.request))
  }
})

AWS CloudFront vs KeyCDN Karşılaştırması

AWS CloudFront:

  • Global edge locations (400+)
  • Lambda@Edge ile custom logic
  • AWS ekosistemi entegrasyonu
  • Maliyet: $0.085/GB (ilk 10TB)

KeyCDN:

  • Basit kurulum süreci
  • Real-time analytics
  • HTTP/2 Push desteği
  • Maliyet: $0.04/GB

Caching Katmanları: Çok Seviyeli Strateji

1. Browser Cache Optimizasyonu

apache
# .htaccess dosyasına eklenecek kod
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
</IfModule>

<IfModule mod_headers.c>
<filesMatch "\.(css|js|png|jpg|jpeg|gif|webp|svg)$">
Header set Cache-Control "max-age=31536000, public"
</filesMatch>
</IfModule>

2. Server-Side Caching

WP Rocket Konfigürasyonu:

  • Page caching aktifleştirme
  • Database cleanup programlama
  • Minification ve concatenation
  • Lazy loading implementasyonu

W3 Total Cache Gelişmiş Ayarları:

php
// wp-config.php optimizasyonları
define('WP_CACHE', true);
define('ENABLE_CACHE', true);
define('WP_MEMORY_LIMIT', '512M');

// Object cache aktivasyonu
define('WP_CACHE_KEY_SALT', 'your-unique-salt');

3. Database Caching

Redis Implementation:

bash
# Redis kurulumu (Ubuntu)
sudo apt install redis-server
sudo systemctl enable redis-server

# WordPress için Redis object cache
wp plugin install redis-cache --activate
wp redis enable

Memcached Alternativi:

php
// wp-config.php Memcached ayarları
$memcached_servers = array(
    'default' => array('localhost:11211')
);

Image Optimization: Görsel Performans Artırımı

WebP Conversion Stratejisi

Otomatik WebP Dönüşümü:

php
// functions.php WebP serve fonksiyonu
function serve_webp_images() {
    if (strpos($_SERVER['HTTP_ACCEPT'], 'image/webp') !== false) {
        add_filter('wp_generate_attachment_metadata', 'create_webp_version');
    }
}
add_action('init', 'serve_webp_images');

function create_webp_version($metadata) {
    $upload_dir = wp_upload_dir();
    $image_path = $upload_dir['basedir'] . '/' . $metadata['file'];
    $webp_path = preg_replace('/\.(jpg|jpeg|png)$/i', '.webp', $image_path);
    
    // ImageMagick ile WebP dönüşümü
    $image = new Imagick($image_path);
    $image->setImageFormat('webp');
    $image->setImageCompressionQuality(80);
    $image->writeImage($webp_path);
    
    return $metadata;
}

Responsive Images ve Srcset

html
<!-- Modern responsive image implementation -->
<picture>
  <source 
    srcset="image-400.webp 400w, image-800.webp 800w, image-1200.webp 1200w"
    sizes="(max-width: 600px) 400px, (max-width: 900px) 800px, 1200px"
    type="image/webp">
  <img 
    src="image-800.jpg" 
    srcset="image-400.jpg 400w, image-800.jpg 800w, image-1200.jpg 1200w"
    sizes="(max-width: 600px) 400px, (max-width: 900px) 800px, 1200px"
    loading="lazy"
    alt="Açıklayıcı alt text">
</picture>

Advanced Lazy Loading

javascript
// Intersection Observer ile custom lazy loading
const lazyImages = document.querySelectorAll('.lazy-image');
const imageObserver = new IntersectionObserver((entries, observer) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      const img = entry.target;
      img.src = img.dataset.src;
      img.classList.remove('lazy-image');
      imageObserver.unobserve(img);
    }
  });
}, {
  rootMargin: '50px 0px'
});

lazyImages.forEach(img => imageObserver.observe(img));

Database Optimization: Veri Tabanı Performansı

MySQL Query Optimizasyonu

Yavaş Sorguları Tespit Etme:

sql
-- Slow query log aktivasyonu
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2;
SET GLOBAL slow_query_log_file = '/var/log/mysql/slow.log';

-- En yavaş sorguları analiz etme
SELECT 
    DIGEST_TEXT,
    COUNT_STAR,
    AVG_TIMER_WAIT/1000000000000 as avg_sec,
    MAX_TIMER_WAIT/1000000000000 as max_sec
FROM performance_schema.events_statements_summary_by_digest 
ORDER BY AVG_TIMER_WAIT DESC 
LIMIT 10;

WordPress Database Cleanup

sql
-- Gereksiz revisions temizliği
DELETE FROM wp_posts WHERE post_type = 'revision';

-- Spam comments silme
DELETE FROM wp_comments WHERE comment_approved = 'spam';

-- Unused meta data temizliği
DELETE pm FROM wp_postmeta pm
LEFT JOIN wp_posts wp ON wp.ID = pm.post_id
WHERE wp.ID IS NULL;

-- Transients temizliği
DELETE FROM wp_options 
WHERE option_name LIKE '_transient_%' 
AND option_name NOT LIKE '_transient_timeout_%';

Index Optimizasyonu

sql
-- Performans artırıcı indexler
ALTER TABLE wp_posts ADD INDEX idx_post_status_date (post_status, post_date);
ALTER TABLE wp_postmeta ADD INDEX idx_meta_key_value (meta_key, meta_value(10));
ALTER TABLE wp_comments ADD INDEX idx_comment_post_approved (comment_post_ID, comment_approved);

Plugin Performance Audit

Plugin Impact Analysis

Query Monitor ile Analiz:

  • Slow queries tespiti
  • Plugin bazlı resource usage
  • HTTP request analizi
  • Memory usage tracking

P3 Plugin Profiler Alternatifleri:

bash
# WP-CLI ile plugin performance testi
wp plugin list --status=active --format=table
wp db query "SELECT * FROM wp_options WHERE autoload = 'yes'" --format=csv

# Plugin autoload data kontrolü
wp option list --autoload=yes --format=table

Kritik Plugin Optimizasyonları

Contact Form 7 Optimizasyonu:

php
// CF7 scripts sadece gerekli sayfalarda yükleme
add_action('wp_enqueue_scripts', 'dequeue_cf7_scripts');
function dequeue_cf7_scripts() {
    if (!is_page('contact')) {
        wp_dequeue_script('contact-form-7');
        wp_dequeue_style('contact-form-7');
    }
}

WooCommerce Performance:

php
// WooCommerce cart fragments deaktivasyonu
add_action('wp_enqueue_scripts', 'disable_wc_cart_fragments', 11);
function disable_wc_cart_fragments() {
    if (is_admin()) return;
    wp_dequeue_script('wc-cart-fragments');
}

Critical CSS ve Above-the-Fold Optimization

Critical CSS Generation

bash
# Critical CSS npm paketi ile oluşturma
npm install -g critical

critical https://yoursite.com \
  --base=./ \
  --css=style.css \
  --dimensions 1300x900,375x667 \
  --minify > critical.css

Above-the-Fold İyileştirmesi

php
// Critical CSS inline etme
function inline_critical_css() {
    if (is_front_page()) {
        echo '<style>' . file_get_contents(get_template_directory() . '/critical-home.css') . '</style>';
    }
}
add_action('wp_head', 'inline_critical_css', 1);

// Non-critical CSS'yi async yükleme
function load_css_async($tag, $handle) {
    if ('theme-style' === $handle) {
        return str_replace("rel='stylesheet'", "rel='preload' as='style' onload=\"this.onload=null;this.rel='stylesheet'\"", $tag);
    }
    return $tag;
}
add_filter('style_loader_tag', 'load_css_async', 10, 2);

AMP Implementation Stratejisi

WordPress AMP Plugin Konfigürasyonu

Reader Mode vs Transitional Mode:

  • Reader Mode: Ayrı AMP sayfaları (/amp/)
  • Transitional Mode: Native AMP experience

Custom AMP Components:

html
<!-- AMP carousel implementation -->
<amp-carousel width="400" height="300" layout="responsive" type="slides">
  <amp-img src="image1.webp" width="400" height="300" alt="Image 1"></amp-img>
  <amp-img src="image2.webp" width="400" height="300" alt="Image 2"></amp-img>
</amp-carousel>

<!-- AMP analytics -->
<amp-analytics type="googleanalytics">
<script type="application/json">
{
  "vars": {
    "account": "UA-XXXXX-Y"
  },
  "triggers": {
    "trackPageview": {
      "on": "visible",
      "request": "pageview"
    }
  }
}
</script>
</amp-analytics>

Monitoring ve Performance Tracking

Core Web Vitals Optimization

Largest Contentful Paint (LCP) İyileştirmesi:

  • Hero image optimizasyonu
  • Server response time azaltma
  • Render blocking resources eliminasyonu

First Input Delay (FID) Düzeltme:

  • JavaScript execution time optimizasyonu
  • Web Workers kullanımı
  • Event listener optimizasyonu

Cumulative Layout Shift (CLS) Önleme:

  • Image ve video dimensions belirleme
  • Font-display: swap kullanımı
  • Dynamic content için space reservation

Continuous Monitoring Setup

javascript
// Real User Monitoring (RUM) implementation
function trackWebVitals() {
  import('web-vitals').then(({getCLS, getFID, getFCP, getLCP, getTTFB}) => {
    getCLS(console.log);
    getFID(console.log);
    getFCP(console.log);
    getLCP(console.log);
    getTTFB(console.log);
  });
}

// Google Analytics 4 ile Core Web Vitals tracking
gtag('config', 'GA_MEASUREMENT_ID', {
  custom_map: {'metric1': 'LCP', 'metric2': 'FID', 'metric3': 'CLS'}
});

Performance Budget Implementation

json
// Lighthouse CI budget.json
{
  "budget": [
    {
      "path": "/*",
      "timings": [
        {"metric": "first-contentful-paint", "budget": 2000},
        {"metric": "largest-contentful-paint", "budget": 2500},
        {"metric": "cumulative-layout-shift", "budget": 0.1}
      ],
      "resourceSizes": [
        {"resourceType": "script", "budget": 300},
        {"resourceType": "image", "budget": 500},
        {"resourceType": "total", "budget": 1000}
      ]
    }
  ]
}

Gelişmiş Optimizasyon Teknikleri

Service Worker ile Offline Caching

javascript
// sw.js - Service Worker implementation
const CACHE_NAME = 'wordpress-site-v1';
const urlsToCache = [
  '/',
  '/wp-content/themes/your-theme/style.css',
  '/wp-content/themes/your-theme/script.js'
];

self.addEventListener('install', event => {
  event.waitUntil(
    caches.open(CACHE_NAME)
      .then(cache => cache.addAll(urlsToCache))
  );
});

self.addEventListener('fetch', event => {
  event.respondWith(
    caches.match(event.request)
      .then(response => response || fetch(event.request))
  );
});

HTTP/2 Push Implementation

php
// HTTP/2 Push header'ları
function add_http2_push_headers() {
    if (is_front_page()) {
        header('Link: </wp-content/themes/theme/critical.css>; rel=preload; as=style', false);
        header('Link: </wp-content/themes/theme/app.js>; rel=preload; as=script', false);
    }
}
add_action('send_headers', 'add_http2_push_headers');

Sonuç ve En İyi Uygulamalar

WordPress performans optimizasyonu sürekli bir süreçtir. 2025 yılında başarılı olmak için:

  1. Hosting altyapısını doğru seçin - Shared hosting yerine VPS tercih edin
  2. CDN kullanımını zorunlu görün - Cloudflare minimum gereklilik
  3. Çok katmanlı caching stratejisi - Browser, server, database, object cache
  4. Image optimizasyonunu otomatikleştirin - WebP, lazy loading, srcset
  5. Database bakımını ihmal etmeyin - Regular cleanup ve indexing
  6. Plugin sayısını minimize edin - Her plugin performans maliyeti
  7. Core Web Vitals'ı takip edin - Google ranking faktörü
  8. Continuous monitoring yapın - Performance regression önleme

Bu rehberdeki teknikleri uyguladığınızda WordPress sitenizin yükleme süresini %60-80 oranında iyileştirebilir, Google PageSpeed Insights skorunuzu 90+ seviyelerine çıkarabilirsiniz. Performans optimizasyonu bir kerelik işlem değil, sürekli izleme ve iyileştirme gerektiren bir süreçtir.

İlgili Konular: WordPress güvenlik, SEO optimizasyonu, WordPress migration, e-ticaret performansı

Yorum Gönder

0 Yorumlar