Buyukweb
WooCommerce Hız ve Performans Optimizasyonu: Kapsamlı Rehber

WooCommerce Hız ve Performans Optimizasyonu: Kapsamlı Rehber

WooCommerce performans rehberi: LSCache, Redis Object Cache, Action Scheduler temizliği, cron job, görsel optimizasyonu ve hosting katmanı seçimi.

Büyükweb Editör EkibiHosting, Sunucu ve Sistem Yönetimi Editörü12 dakika okuma

WooCommerce Optimizasyonu: Hız ve Performans İyileştirme Rehberi

WooCommerce'i standart bir WordPress sitesinden farklı kılan şey, her sayfa yüklemesinin arkasında dinamik PHP yürütme, çok sayıda veritabanı sorgusu ve AJAX çağrısı birleşiminin bulunmasıdır. Bir blog yazısı için tek sorgu yeterliyken, ürün listesi + sepet durumu + hesap bilgisi + ödeme sayfası aynı anda çalışan onlarca bağımsız işlem demektir. Bu mimari fark, WooCommerce'in neden özel bir performans yaklaşımı gerektirdiğini açıklar.

Bu rehberde yavaşlamanın kökenine, her katmanda uygulanabilecek somut çözümlere ve Buyukweb altyapısıyla nasıl en iyi konfigürasyona ulaşabileceğinize bakacağız.

WooCommerce Neden Yavaşlar — Gerçek Nedenler

Çoğu performans rehberi "eklentileri azalt, görselleri optimize et" der ve durur. Oysa WooCommerce'e özgü dört yapısal yavaşlama kaynağı vardır:

Dinamik içerik zorunluluğu. Sepet, ödeme sayfası ve hesap sayfası kişiselleştirilmiş veri içerdiğinden geleneksel sayfa önbelleği bu sayfalara uygulanamaz. Her ziyaretçi için PHP gerçek zamanlı çalışır.

wp_options tablosunun şişmesi. WooCommerce ve eklentiler onlarca ayar satırını wp_options tablosuna yazar; her sayfa yüklemesinde autoload='yes' olan tüm bu satırlar MySQL'den çekilir. Büyük bir sitede bu tek sorgu 5-10 MB veri transfer edebilir.

Action Scheduler birikimleri. WooCommerce, e-posta gönderme, stok güncelleme ve abonelik yenileme gibi görevleri wp_actionscheduler_actions tablosuna yazar. Temizleme yapılmazsa bu tablo yüz binlerce satıra ulaşır ve her WP-Cron çalışmasında tablo taraması gerçekleşir.

AJAX cart fragments. WooCommerce varsayılan olarak her sayfa yüklemesinde /wp-admin/admin-ajax.php?action=woocommerce_get_refreshed_fragments isteği atar. Bu istek mini sepet widget'ını güncel tutar ama önbellekli sayfalar için ekstra bir HTTP round-trip demektir; düşük sunucu kapasitesinde bu istek kuyruğa girer, sayfa "donmuş" görünür.

WooCommerce Darboğazları Matrisi

Performans sorununu tanımlamak için önce hangi katmanda olduğunu belirlemek gerekir:

Katman Belirti Ölçüm Aracı
PHP yürütme TTFB > 1 sn, CPU spike New Relic APM, Query Monitor
DB sorgu Slow query log, sayfa başı 50+ sorgu wp_debug, MySQL slow log
AJAX Network tab'da admin-ajax.php 500ms+ Chrome DevTools → Network
Action Scheduler Admin paneli yavaş, wp_actionscheduler büyük WC > Durum > Zamanlanmış Eylemler
Sayfa render LCP > 3 sn, CLS, INP yüksek PageSpeed Insights, WebPageTest

Darboğazı doğru katmanda tespit etmeden uygulanan optimizasyon bant genişliği kaybıdır.

Hosting Katmanının Önemi — TR Datacenter Zorunluluğu

Türkiye'ye satış yapan bir WooCommerce mağazasında sunucu lokasyonu doğrudan TTFB'yi belirler. İstanbul'daki bir kullanıcı Frankfurt'taki bir sunucuya bağlandığında yalnızca fiziksel gecikme bile 60-80 ms ekler; bu süre Türkiye Tier 3 veri merkezinde 5-10 ms'ye düşer.

Web sunucusu seçimi de kritiktir:

  • Apache: Yaygın ama her bağlantı için process/thread açar; yüksek eş zamanlı bağlantıda bellek tüketimi artar.
  • Nginx: Event-driven mimari ile Apache'den daha verimli eş zamanlı bağlantı yönetimi; ancak WooCommerce önbelleği için ek yapılandırma gerekir.
  • LiteSpeed Web Server: Event-driven + LSAPI ile PHP'yi en verimli çalıştıran web sunucusu; LSCache eklentisi ile WooCommerce'e özel built-in önbellekleme sunar.

Buyukweb tüm hosting paketlerinde LiteSpeed Web Server + cPanel kombinasyonu kullanır. LSCache kurulum gerektirmez; hosting kontrolpanelinden tek tıkla aktif edilir.

LSCache ve WooCommerce — Built-in Entegrasyon

LiteSpeed Cache (LSCache), WooCommerce ile tasarlanmış birkaç önbellekleme çözümünden biridir. Fark şurada: WP Rocket veya WP Super Cache gibi eklentiler PHP katmanında çalışırken LSCache, web sunucusu seviyesinde çalışır — PHP hiç devreye girmeden statik içerik doğrudan servis edilir.

WooCommerce için kritik LSCache ayarları:

Otomatik sayfa hariç tutma. LSCache, /cart/, /checkout/, /my-account/ sayfalarını ve oturum açmış kullanıcıları otomatik önbellek dışında tutar. Bu sayfalarda kişiselleştirilmiş veri olduğundan önbellek zararlı olur; LSCache bunu varsayılan olarak doğru yapar.

ESI (Edge Side Includes). Sayfanın statik kısmını önbelleğe alırken mini sepet veya "giriş yap" gibi dinamik bloğu ESI ile ayrı render eder. Böylece ürün sayfası tamamen önbelleğe alınır ama sepet ikonu kullanıcıya özel kalır.

Varying cookies. WooCommerce oturum çerezi (woocommerce_cart_hash, woocommerce_items_in_cart) değiştiğinde LSCache farklı önbellek versiyonu sunar; giriş yapmış + sepette ürün olan kullanıcıya yanlış içerik gitmez.

Private endpoint hariç tutma. /wp-json/wc/ REST API endpoint'leri ve /wp-admin/admin-ajax.php önbellek dışında kalır; bunlar zaten dinamik yanıt döner.

LSCache yapılandırması için: WordPress yönetici paneli → LiteSpeed Cache → Cache → WooCommerce sekmesi altındaki ayarları inceleyin; çoğu seçenek varsayılan doğru gelir.

Redis Object Cache — wp_options Sorgusunu Kaldırmak

Redis, WooCommerce performansında en yüksek etkiyi yaratan tek değişkendir. Nedeni şu: WordPress her sayfa yüklemesinde wp_options tablosunu okur, transient değerlerini çeker ve WC session verilerini yönetir. Bu sorgular tekrar eden hesaplamalar içerir. Redis bu sonuçları bellekte tutar; ikinci istekten itibaren MySQL yerine RAM'den yanıt gelir.

// wp-config.php — Redis bağlantı ayarları
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_DATABASE', 0);
define('WP_REDIS_TIMEOUT', 1);
define('WP_REDIS_READ_TIMEOUT', 1);

Buyukweb hosting paketlerinde Redis Object Cache, cPanel üzerinden destek hattı aracılığıyla (0850 302 60 70) aktif edilir. Aktivasyon sonrası WordPress Yönetici Paneli → Araçlar → Redis bölümünden bağlantı durumunu doğrulayabilirsiniz.

LSCache + Redis combo: LSCache sayfa önbelleğini, Redis ise object cache'i karşılar. İkisi birlikte çalıştığında sayfa önbelleği olmayan dinamik sayfalarda (checkout) bile PHP sorgu yükü büyük ölçüde düşer.

Transient API'yi Redis'e taşımak. WordPress transient mekanizması varsayılan olarak wp_options tablosuna yazar. Redis aktif olduğunda transient otomatik olarak belleğe alınır; veritabanı yazma/okuma baskısı azalır.

Veritabanı Optimizasyonu — wp_options Autoload Bloat

wp_options tablosundaki autoload='yes' satırları her sayfa yüklemesinde belleğe çekilir. Bu alanı denetlemek için:

SELECT option_name, LENGTH(option_value) AS bytes
FROM wp_options
WHERE autoload = 'yes'
ORDER BY LENGTH(option_value) DESC
LIMIT 20;

Sorgu sonucunda megabayt boyutunda satırlar görüyorsanız sorun büyük ihtimalle eski eklenti verileri, cached transient'lar veya WC session kalıntılarıdır.

Temizlik için WP-CLI veya WP-Optimize eklentisi kullanılabilir:

# WP-CLI ile expired transient temizliği
wp transient delete --expired

# Tüm transient'ları temizle (dikkatli kullanın)
wp transient delete --all

# Veritabanı optimize et
wp db optimize

Revizyon limiti. wp-config.php dosyasına define('WP_POST_REVISIONS', 5); eklemek revizyon birikimini önler.

Oturum temizliği. WooCommerce ziyaretçi oturumlarını wp_woocommerce_sessions tablosuna yazar; eski oturumlar temizlenmezse tablo şişer. WC bu temizliği kendi zamanlanmış görevi ile yapar; Action Scheduler sağlıklı çalışıyorsa problem olmaz.

Action Scheduler Şişmesi ve Kontrol

WooCommerce, abonelik yenileme, stok bildirimi, e-posta kuyruğu gibi arka plan görevlerini Action Scheduler kütüphanesiyle yönetir. Bu görevler wp_actionscheduler_actions tablosuna yazılır.

Varsayılan saklama süresi 30 gün; yüksek sipariş hacminde tamamlanmış eylemler birikerek tablo yüz binlerce satıra ulaşabilir. Her WP-Cron çalışmasında bu tabloya erişildiğinden büyük tablo = yavaş cron = gecikmeli e-posta/stok güncelleme demektir.

Durumu görmek için: WooCommerce → Durum → Zamanlanmış Eylemler

// wp-config.php — Action Scheduler saklama süresini 7 güne düşür
define('ACTION_SCHEDULER_RETENTION_PERIOD', WEEK_IN_SECONDS);

WP-Cron'u devre dışı bırakmak — yüksek trafik için zorunlu. WP-Cron, ziyaretçi isteği tetikleyince çalışır. Trafik düşükse cron görevleri geç çalışır; trafik yüksekse her istek cron yükü ekler. Çözüm: WP-Cron'u kapat, gerçek sistem cron'u kur.

// wp-config.php
define('DISABLE_WP_CRON', true);

cPanel → Cron Jobs bölümüne aşağıdaki görevi ekleyin (her dakika çalıştır):

* * * * * wget --quiet -O - https://siteniz.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1

Bu yapılandırmayla zamanlanmış görevler her dakika düzenli çalışır; ziyaretçi isteğine bağımlılık ortadan kalkar.

Görsel Optimizasyonu — WebP/AVIF ve Lazy Loading

Görseller çoğu WooCommerce mağazasında sayfa ağırlığının %60-70'ini oluşturur. Ürün fotoğrafları için pratik kural:

  • WebP: JPEG'e göre ortalama %25-35 daha küçük dosya boyutu, tüm modern tarayıcılarda destek
  • AVIF: WebP'den %20-30 daha küçük ancak kodlama yavaş; büyük kataloglarda tercih edilmeyebilir
  • Lazy loading: Ekranın altındaki görseller yüklenmeden önce sayfanın görünür kısmı hazır olur

WordPress 5.5'ten itibaren loading="lazy" yerleşik; ek eklenti gerekmez. Ancak hero görsel (ürün ana fotoğrafı, kategori banner) için loading="eager" ve fetchpriority="high" eklenmesi LCP'yi doğrudan iyileştirir:

<!-- Hero ürün görseli için — lazy kaldır, öncelikli yükle -->
<img src="urun-ana.webp"
     width="800" height="600"
     loading="eager"
     fetchpriority="high"
     alt="Ürün adı">

Eklenti seçenekleri: Imagify, ShortPixel ve EWWW Image Optimizer WooCommerce ile uyumlu çalışır; mevcut görselleri toplu WebP'ye dönüştürür, yeni yüklemeler otomatik işlenir.

CSS/JS Minify ve Defer — Render-Blocking Eliminasyonu

Ürün sayfasında kullanılmayan sayfanın ödeme JS'ini yüklemek gereksiz bant genişliği ve parse süresi demektir. WooCommerce'de sayfa-spesifik script yükleme:

// functions.php — Cart JS'yi sadece cart/checkout sayfasında yükle
add_action('wp_enqueue_scripts', function() {
    if (!is_cart() && !is_checkout()) {
        wp_dequeue_script('wc-cart-fragments');
    }
});

LSCache built-in minify. LiteSpeed Cache → Sayfa Optimizasyonu bölümünden CSS/JS minify, birleştirme ve defer açılır; ayrı eklenti gerekmez. Autoptimize veya Asset CleanUp da benzer işlevi görür.

Render-blocking JS elimine etmek. <head> içindeki her script etiketi tarayıcının HTML parse'ını durdurur. WooCommerce core dosyaları için yapacak fazla şey yoktur ancak tema ve eklenti JS'lerini defer veya async ile yüklemek First Contentful Paint'i iyileştirir.

// functions.php — Belirli script'lere defer ekle
add_filter('script_loader_tag', function($tag, $handle) {
    $defer = ['theme-scripts', 'custom-analytics'];
    if (in_array($handle, $defer)) {
        return str_replace(' src', ' defer src', $tag);
    }
    return $tag;
}, 10, 2);

CDN Stratejisi — Cloudflare APO ve Static Asset Edge Cache

CDN, statik varlıkları (görseller, CSS, JS) kullanıcıya yakın edge sunuculardan servis eder; origin sunucuya gelen istek azalır.

Cloudflare APO (Automatic Platform Optimization) WooCommerce destekler ancak dikkatli yapılandırma ister: sepet, ödeme ve hesap sayfalarını Bypass kuralına almak şart; aksi hâlde kişiselleştirilmiş sayfalar edge'de önbelleğe alınır ve yanlış kullanıcıya gider.

# Cloudflare Page Rule — Bypass Cache
URL: siteniz.com/cart/*
URL: siteniz.com/checkout/*
URL: siteniz.com/my-account/*
Cache Level: Bypass

Statik varlıklar için CDN kullanımı origin TTFB'yi azaltmaz; sunucunun ilk yanıt süresini iyileştirmek için origin tarafında (LiteSpeed + Redis) optimizasyon şarttır. CDN + güçlü origin kombinasyonu en yüksek etkiyi verir.

Ürün Arama ve Filtre — LIKE Sorgusu Sorunu

WooCommerce'in yerleşik ürün arama motoru MySQL LIKE '%kelime%' sorgusu kullanır. 500 ürünün altında kabul edilebilir ama katalog büyüdükçe her arama tam tablo taramasına dönüşür.

10.000+ ürün için: Elasticsearch veya Algolia entegrasyonu arama sorgularını MySQL'den çıkarır; milisaniyeler içinde sonuç döner. FacetWP veya JetSmartFilters gibi eklentiler, kategori/fiyat/renk gibi çok boyutlu filtre sağlar; bunlar da doğru indekslenmiş tablolarla çalıştığında MySQL yükünü azaltır.

Küçük katalog için basit çözüm: ürün meta'larına doğru indeks eklemek bile arama performansını iyileştirir:

-- Ürün meta sorgularını hızlandırmak için ek indeks
CREATE INDEX idx_pm_key_val ON wp_postmeta(meta_key, meta_value(20));

Checkout Optimizasyonu — Block Checkout ve Ödeme Hızı

WooCommerce 8.x ile birlikte gelen Block Checkout (Gutenberg tabanlı), klasik shortcode checkout'a göre daha az PHP render döngüsü kullanır; özellikle LiteSpeed ortamında ESI ile parçalı render avantajı sağlar.

Checkout dönüşümünü etkileyen teknik faktörler:

  • Tek sayfa checkout: Adres + ödeme aynı sayfada; yönlendirme azalır
  • Adres otomatik doldurma: Google Places API ile adres alanı hızlanır
  • Stripe Payment Element: Tek iframe ile kart, Apple Pay, Google Pay desteği; banka yönlendirme yoktur

Ödeme sayfasında JS ve CSS yalnızca checkout'a özgü olmalı; tüm site script'lerini bu sayfada çalıştırmak INP metriğini olumsuz etkiler.

Cron Job Altyapısı — WP-Cron'dan Sistem Cron'a

WP-Cron davranışını özetlemek gerekirse: ziyaretçi gelince çalışır, ziyaretçi yoksa çalışmaz. Günde birkaç yüz sipariş alan bir mağazada e-posta bildirimleri, stok senkronizasyonu ve abonelik yenilemesi WP-Cron ile güvenilir biçimde çalışmaz.

cPanel Cron Jobs ile gerçek sistem cron kurulumu:

  1. cPanel → Cron Jobs → Add New Cron Job
  2. Periyot: Her dakika (* * * * *)
  3. Komut:
wget --quiet -O - https://siteniz.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1

Bu kurulumdan önce wp-config.php dosyasına define('DISABLE_WP_CRON', true); eklemeyi unutmayın; eklenmezse hem sistem cron hem WP-Cron çalışır, eylemler çift tetiklenir.

Hosting Paket Kararı — WC Büyüklüğüne Göre

WooCommerce mağazası büyüdükçe kaynak ihtiyacı hızla artar. Pratik eşikler:

Küçük mağaza (≤500 ürün, ≤100 sipariş/gün): Buyukweb Performans veya Uçak hosting paketi yeterlidir. LiteSpeed + LSCache varsayılan olarak aktif; Redis Object Cache destek hattı üzerinden eklenir. Aylık ₺350-750 arasında paket.

Orta mağaza (1.000-5.000 ürün, 100-500 sipariş/gün): Jet hosting paketi veya giriş seviyesi VDS önerilir. Özellikle marketplace entegrasyonu (Trendyol, Hepsiburada API) varsa sabit IP ve daha yüksek PHP-FPM limitleri gerekir.

Büyük mağaza (10.000+ ürün veya 500+ sipariş/gün): Buyukweb Türkiye VDS — Bursa Tier 3 veri merkezi, Intel Xeon E5-V4 işlemci, NVMe SSD + ayrılmış MySQL instance. Redis önbellek bu boyutta zorunlu hâle gelir; Elasticsearch entegrasyonu da bu aşamada değer kazanır. VDS paketleri ₺1.200-2.000+/ay arasında başlar.

Buyukweb Altyapısı ve WooCommerce

Buyukweb hosting ve VDS paketlerinde WooCommerce performansı için standart gelen bileşenler:

  • LiteSpeed Web Server: Tüm hosting paketlerinde; LSCache eklentisi ile native WooCommerce önbellek
  • cPanel: Kolay yönetim; Cron Jobs, PHP sürüm seçimi (8.1/8.2/8.3), SSL yönetimi
  • Redis Object Cache: Destek hattı üzerinden aktivasyon (0850 302 60 70); object cache + transient hızlandırma
  • JetBackup: Haftalık otomatik yedekleme; tek tıkla geri yükleme
  • VDS için: Bursa Tier 3 veri merkezi, E5-V4 CPU, NVMe disk; büyük WooCommerce için önerilen çözüm

Sık Sorulan Sorular

WooCommerce neden WordPress'ten çok daha yavaş?

WooCommerce, sepet durumu ve oturum yönetimi nedeniyle çok sayıda dinamik sayfa içerir. Bunlara ek olarak Action Scheduler, WC session tablosu ve onlarca wp_options satırı her sayfa yüklemesinde çalışır. Optimize edilmemiş bir kurulumda sayfa başı sorgu sayısı 80-150 arası çıkabilir; optimize edilmiş (LSCache + Redis) kurulumda bu sayı 10'un altına düşer.

LSCache tek başına yeterli mi?

Statik sayfalar ve ürün listeleri için evet; checkout, sepet ve hesap sayfaları için hayır — bu sayfalar önbelleğe alınamaz. LSCache bu sayfaları doğru biçimde atlar. Öte yandan bu dinamik sayfalarda PHP yükünü azaltmak için Redis Object Cache gerekir; ikisi birbirini tamamlar.

Redis'i aktif etmek ne kadar etkili?

Etkisi mağaza büyüklüğüyle doğru orantılıdır. Küçük mağazada wp_options cache hit iyileştirmesi %20-30 TTFB düşüşü sağlar. Büyük mağazada, özellikle action scheduler + oturum yönetimi yükü altında, MySQL sorgu sayısının %60-70 azaldığı gözlemlenir.

Cloudflare APO WooCommerce'de güvenli mi kullanılabilir?

Evet, ancak sepet/checkout/hesap sayfalarını Bypass kuralına almak şarttır. Cloudflare APO kurulumundan sonra test edilmesi gereken iki senaryo: (1) Sepete ürün ekle, farklı tarayıcıdan aynı URL'yi aç — sepet boş gelmeli. (2) Giriş yapılmış hesapla dashboard aç — başka kullanıcının verisi görünmemeli.

Action Scheduler şişti, ne yapmalıyım?

Önce WooCommerce → Durum → Zamanlanmış Eylemler bölümünden tamamlanmış ve başarısız eylem sayısına bakın. Tamamlanmış eylemler yüz binleri aşıyorsa wp-config.php dosyasına saklama süresini kısaltan tanım ekleyin. Sonrasında WP-CLI ile eski eylemleri temizleyebilirsiniz:

wp action-scheduler clean --days-old=7 --batch-size=1000

Temizlik sonrası sizi rahatsız etmemesi için sistem cron kurun; WP-Cron'a bırakılan Action Scheduler yüksek trafikte güvenilmez çalışır.

Sistem cron cPanel'de nasıl kurulur?

cPanel giriş yapın → Cron Jobs → Add New Cron Job. Periyot alanlarına * yazarak her dakika seçin. Komut alanına wget --quiet -O - https://siteniz.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1 yazın. Kaydedin. wp-config.php dosyasına define('DISABLE_WP_CRON', true); ekleyin. Kurulum tamamlanır; artık zamanlanmış görevler ziyaretçiye bağlı değil.


WooCommerce performansı tek bir eklenti veya tek bir ayarla çözülmez; hosting katmanı (LiteSpeed, Türkiye datacenter), önbellekleme (LSCache + Redis), veritabanı bakımı (Action Scheduler, wp_options) ve sayfa-spesifik optimizasyon birlikte ele alınması gereken bir bütündür. Mevcut kurulumunuzda nereden başlayacağınızı bulmak için 0850 302 60 70 numaralı destek hattımıza ulaşabilirsiniz.

İlgili Büyükweb Hizmetleri

WooCommerce mağazanız için LiteSpeed + LSCache + Redis altyapısı:

Sorularınız için 0850 302 60 70 numaralı destek hattımıza veya iletişim sayfamıza yazabilirsiniz.

E-Ticaret İlgili Hizmetlerimiz

Bu yazıda anlatılan teknik konuyu profesyonel altyapıyla deneyimleyin

Etiketler:

#woocommerce#e-ticaret performansı#wordpress optimizasyonu#redis#cdn#core web vitals

Bu yazıyı paylaş