Yavaş bir mağaza sepet terk oranını artırır, ürün sayfasında bekleyen müşteri başka siteye geçer. WooCommerce, düz bir WordPress sitesinden daha fazla dinamik iş yapar: sepet oturumları, stok kontrolü, sipariş kayıtları, arka plan görevleri. Bu yüzden paylaşımlı hostingde de hızlı çalışabilir, ama doğru ayarlarla. Önbelleği yanlış kurarsanız hız kazanırken ödeme sayfasını bozabilirsiniz; doğru kurarsanız hem hızlı hem güvenli bir mağazanız olur.

Bu rehberde LiteSpeed sunucularda yaygın olan LiteSpeed Cache eklentisini WooCommerce'e göre ayarlamaktan HPOS'a, cart fragments'tan Action Scheduler temizliğine kadar dokuz adımı resmi belgelere dayanarak anlatıyoruz. Her adımdan önce yedek alın; değişiklikleri tek tek yapıp ölçün.

Önce ölçün

Hangi adımın işe yaradığını bilmek için başlangıç değeri gerekir. Ana sayfa, bir kategori sayfası, bir ürün sayfası, sepet ve ödeme sayfasını ayrı ayrı ölçün; sepet ve ödeme sayfaları önbelleğe alınmadığı için sunucunun gerçek performansını gösterir. Ölçüm araçları ve Core Web Vitals metrikleri için sayfa hızı ve Core Web Vitals, genel yavaşlık nedenleri için web sitesi yavaş açılıyor yazılarına bakın. WooCommerce belgeleri, eklentilerin yükünü görmek için wordpress.org'daki Query Monitor eklentisini önerir; veritabanı sorgularını, PHP hatalarını ve dış HTTP çağrılarını gösterir.

1. PHP sürümünü ve sunucu gereksinimlerini güncelleyin

1. PHP sürümünü ve sunucu gereksinimlerini güncelleyin: WordPress, 8.3 veya üstü (8.4 ile test edilmiş), Veritabanı, HTTPS

WooCommerce'in sunucu önerileri sayfası (WooCommerce 10.8 ve sonrası için) şunları listeler:

BileşenWooCommerce önerisi
WordPress6.9 veya üstü
PHP8.3 veya üstü (8.4 ile test edilmiş)
VeritabanıMySQL 8.0+ veya MariaDB 10.6+
HTTPSDestek gerekli
WordPress bellek sınırı256 MB veya üstü

Belge, eski ortamlarda WooCommerce'in PHP 7.4+ ve MySQL 5.6+ ile de çalıştığını, ancak bu sürümlerin destek süresinin bittiğini ve güvenlik riski taşıdığını belirtir. php.net'e göre PHP 8.2'nin güvenlik desteği 31 Aralık 2026'da, 8.3'ünki 31 Aralık 2027'de, 8.4'ünki 31 Aralık 2028'de bitiyor. Panelinizdeki PHP sürüm seçiciden (cPanel'de MultiPHP Manager) önce bir hazırlık (staging) kopyasında yeni sürümü deneyin, eklenti ve tema uyumunu kontrol ettikten sonra canlı siteye geçin.

Bellek sınırı için PHP memory limit hatası ve wp-config.php sabitleri yazılarına bakın. Kurulu değerleri WooCommerce > Status altındaki sistem durumu raporunda görebilirsiniz.

2. LiteSpeed Cache'i WooCommerce için ayarlayın

Sunucunuz LiteSpeed ise sayfa önbelleği için wordpress.org'daki LiteSpeed Cache eklentisi en doğal seçimdir; önbelleği PHP'ye ulaşmadan sunucu seviyesinde verir. Eklentinin wordpress.org sayfasında, bu yazının kontrol tarihinde 7.9.2 sürümü yer alıyor; en düşük gereksinim PHP 7.4 ve WordPress 6.0. Genel kurulum ve kavramlar için LSCache rehberimize bakın; burada yalnızca WooCommerce'e özgü noktalar var.

  • Sepet, ödeme ve hesap sayfaları önbelleğe alınmamalı. LiteSpeed belgelerine göre eklenti My Account, Checkout ve Cart sayfalarını varsayılan olarak önbellek dışında tutar. Belge, WooCommerce ayarlarındaki sayfa eşleştirmeleri yanlışsa sayfaların yanlış sınıflandırılabileceği uyarısını da yapar. WooCommerce > Settings > Advanced altındaki sayfa kurulumunda Cart, Checkout ve My account sayfalarının doğru seçildiğini kontrol edin.
  • Tek sayfa önbelleği kullanın. LiteSpeed Cache'in yanında ikinci bir sayfa önbelleği eklentisi çalıştırmak, hangi katmanın neyi sakladığını belirsizleştirir ve ödeme sayfası sorunlarının en sık nedenlerinden biridir.
  • Product Update Interval: WooCommerce sekmesindeki bu ayar, stok miktarı veya stok durumu değiştiğinde ürün ve kategori sayfalarının ne kadar agresif temizleneceğini belirler. Ürün ve kategori sayfalarında stok adedi gösteriyorsanız her stok olayında ikisini de temizleyen seçeneği seçin; stok bilgisini göstermiyorsanız daha az temizleme yeterlidir.

WooCommerce'in geliştirici belgeleri, hangi önbellek sistemini kullanırsanız kullanın şu çerezlerin önbelleği atlatması gerektiğini listeler. LiteSpeed Cache bunları zaten tanır; başka bir katman (CDN, sunucu önbelleği) ekliyorsanız aynı kuralları orada da uygulayın:

ÇerezSüreGörevi
woocommerce_cart_hashOturumSepet içeriğinin değiştiğini anlamak
woocommerce_items_in_cartOturumSepet içeriğinin değiştiğini anlamak
wp_woocommerce_session_2 günMüşterinin sepet verisini veritabanında bulmak
woocommerce_recently_viewedOturumSon görüntülenen ürünler bileşeni

Cloudflare gibi bir CDN'de önbellek kuralı yazıyorsanız Cloudflare Cache Rules yazısındaki hariç tutma mantığını sepet, ödeme ve hesap sayfalarına uygulayın.

3. ESI ve mini sepet ayarı

LiteSpeed belgeleri WooCommerce kullanırken ESI'yi (Edge Side Includes) açmanızı "kesinlikle" önerir: ESI, sayfanın genel kısmını herkese ortak önbellekten verirken sepet gibi kişisel parçaları ayrı tutar. Eklentinin üçüncü taraf uyumluluk listesine göre WooCommerce'in "Recently Viewed Products" bileşenini kullanıyorsanız ESI'yi açmanız gerekir. ESI ayarı Cache > ESI sekmesindedir.

WooCommerce sekmesindeki Vary for Mini Cart ayarı varsayılan olarak kapalıdır. Belgeye göre çoğu tema mini sepeti JavaScript ile güncellediği için sorun çıkmaz; temanız bunu yapmıyorsa sepet içeriği önbelleğe girer ve ziyaretçiler yanlış sepet görebilir. Bu durumda ayarı açın; eklenti .htaccess dosyasını otomatik günceller.

4. Cart fragments yükünü azaltın

Klasik temalardaki mini sepet bileşeni, sepet sayısını güncel tutmak için "cart fragments" adlı bir AJAX isteği yapar. WooCommerce 7.8 öncesinde bu betik her sayfada çalışıyordu. WooCommerce geliştirici blogundaki duyuruya göre 7.8 ile birlikte betik yalnızca sepet bileşeninin görüntülendiği sayfalarda yükleniyor. Ancak Storefront gibi bazı temalar bileşeni şablona gömülü getirir, bazı eklentiler de betiği bağımlılık olarak çağırır; bu durumda istek her sayfada sürer.

Aynı yazı iki yol önerir. Kalıcı çözüm, mini sepet bileşeni yerine cart fragments kullanmayan Mini-Cart bloğuna geçmektir; blok temada bunu başlık şablonuna ekleyerek yaparsınız. İkinci yol, betiğin yalnızca WooCommerce sayfalarında çalışmasını sağlayan şu filtredir (bir alt temanın functions.php dosyasına veya kod parçacığı eklentisine eklenir):

php
add_filter( 'woocommerce_get_script_data', function( $script_data, $handle ) {
    if ( 'wc-cart-fragments' === $handle ) {
        if ( is_woocommerce() || is_cart() || is_checkout() ) {
            return $script_data;
        }
        return null;
    }
    return $script_data;
}, 10, 2 );

5. Object cache: ne zaman işe yarar?

Sayfa önbelleği, sepet ve ödeme gibi önbelleğe alınamayan sayfalara yardım etmez; bu sayfalarda her istek veritabanına gider. Object cache, sık tekrarlanan veritabanı sorgu sonuçlarını bellekte tutarak bu yükü hafifletir. LiteSpeed belgelerine göre LiteSpeed Cache object cache'i kendisi sağlamaz; Memcached, LiteSpeed'in LSMCD'si veya Redis gibi harici bir hizmete bağlanır. Ayar varsayılan olarak kapalıdır ve eklentinin Object bölümünden açılır; yöntem olarak Memcached veya Redis seçilir, sunucu adresi ve port girilir. Belgeye göre object cache mevcutsa eklenti geçici verileri (transient) de orada tutar.

6. Görselleri optimize edin

6. Görselleri optimize edin: Belgeye göre Standard Queue herkes için ücretsiz ve sınırsızdır; Advanced Queue..., Varsayılan olarak yalnızca JPG ve PNG dosyaları optimize edilir...

Ürün görselleri çoğu mağazada sayfa ağırlığının en büyük kısmıdır. WooCommerce'in performans belgesi doğru format seçimini, yükleme öncesi sıkıştırmayı, tembel yüklemeyi (lazy loading) ve cihaza uygun boyutta görsel sunmayı önerir. LiteSpeed Cache'in görsel optimizasyonu QUIC.cloud hizmeti üzerinden çalışır:

  • Belgeye göre Standard Queue herkes için ücretsiz ve sınırsızdır; Advanced Queue aylık ücretsiz bir kotayla gelir.
  • Varsayılan olarak yalnızca JPG ve PNG dosyaları optimize edilir; WebP veya AVIF üretimi ayarlardan ayrıca açılmalıdır.
  • İlk istekte yalnızca bir görsel gönderilir; bağlantı doğrulanınca 200 görsellik gruplarla devam edilir. Auto Request Cron ve Auto Pull Cron ayarları açıldığında işlem arka planda sürer; bunun için sistem cron'unun çalışıyor olması gerekir.
  • Optimizasyondan sonra diskte her görselin üç kopyası bulunabilir: optimize edilmiş hâli, yeni nesil formatı ve orijinalin yedeği. Disk kotanızı izleyin.

7. HPOS'u (High-Performance Order Storage) etkinleştirin

7. HPOS'u (High-Performance Order Storage) etkinleştirin: 1. Tam yedek alın., 2. Özel yazı türü kullanan eklentilerin (belge Woo Subscriptions ve WooCommerce..., 3. WooCommerce >...

WooCommerce eskiden siparişleri WordPress'in genel _posts ve _postmeta tablolarında saklıyordu. HPOS, siparişler için _wc_orders, _wc_order_addresses, _wc_order_operational_data ve _wc_orders_meta adlı ayrı tablolar ve indeksler kullanır; belgeye göre bu daha az okuma/yazma işlemi ve daha az meşgul tablo demektir. HPOS, WooCommerce 8.2'den itibaren yeni kurulumlarda varsayılan olarak açıktır. Eski bir mağazanız varsa şu adımlarla geçebilirsiniz:

  • 1. Tam yedek alın.
  • 2. Özel yazı türü kullanan eklentilerin (belge Woo Subscriptions ve WooCommerce Bookings'i örnek verir) etkin olduğundan emin olun. Bunları devre dışıyken geçiş yapmak veri tutarsızlığına yol açabilir.
  • 3. WooCommerce > Settings > Advanced > Features sayfasında Enable compatibility mode (synchronizes orders to the posts table) kutusunu işaretleyin. Arka planda eşitleme görevleri (wc_schedule_pending_batch_process ve wc_run_batch_process) zamanlanır; her görev 25 sipariş aktarır.
  • 4. Görevlerin bitmesini bekleyin veya WooCommerce > Status > Scheduled Actions ekranında görevin altındaki Run bağlantısıyla elle çalıştırın. SSH ve WP-CLI erişiminiz varsa wp wc cot sync komutu da aynı işi yapar.
  • 5. Eşitleme bitince High-performance order storage (recommended) seçeneğini seçip kaydedin. Belge, uyumluluk modunu bir süre açık tutmanızı önerir; sorun çıkarsa eski depolamaya anında dönebilirsiniz.

HPOS ile uyumlu olmayan bir eklenti varsa geçiş seçeneği pasif görünür ve View and manage bağlantısı uyumsuz eklentileri listeler. Bu durumda eklentinin geliştiricisinden HPOS desteği isteyin veya alternatif bulun.

8. Action Scheduler ve WP-Cron'u düzene sokun

WooCommerce e-postalar, webhook'lar, ödenmemiş siparişlerin iptali gibi arka plan işleri için Action Scheduler kullanır. Yönetim ekranı WooCommerce > Status > Scheduled Actions altındadır (ayrıca Tools > Scheduled Actions). Burada bekleyen, başarısız ve tamamlanmış görevleri görür, başarısız bir görevin kayıtlarını okuyabilirsiniz. Binlerce "Past-due" (gecikmiş) veya "Failed" görev birikmişse bu bir belirtidir: zamanlayıcı düzgün tetiklenmiyor ya da bir eklenti sürekli hata veriyordur.

Action Scheduler belgelerine göre 4.0.0 sürümünden itibaren başarısız görevler varsayılan olarak üç ay saklanıp temizlenir. SSH erişiminiz varsa eski kayıtları WP-CLI ile kontrollü biçimde silebilirsiniz; belgedeki örnek:

bash
wp action-scheduler clean --status=failed --batch-size=50 --before='90 days ago' --pause=2

Action Scheduler kuyruğu WP-Cron tarafından tetiklenir ve WP-Cron yalnızca biri siteyi ziyaret ettiğinde çalışır. WordPress geliştirici belgeleri, düzenli çalışması gereken görevler için WP-Cron'u sistem zamanlayıcısına bağlamayı ve her sayfa yüklemesinde çalışmasını kapatmayı önerir. Önce panelinizden (cPanel'de Cron Jobs) bir zamanlanmış görev ekleyin, sonra wp-config.php dosyasına sabiti yazın:

bash
# Cron görevi: her 15 dakikada bir wp-cron.php'yi çağır
*/15 * * * * wget --delete-after https://ornekmagaza.com/wp-cron.php

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

9. Veritabanını temizleyin

Zamanla biriken revizyonlar, otomatik taslaklar ve süresi dolmuş geçici veriler veritabanını şişirir. LiteSpeed Cache'in Database bölümündeki DB Optimizer şunları temizleyebilir: yazı revizyonları, sahipsiz post meta kayıtları, otomatik taslaklar, çöpteki yazılar, spam ve çöpteki yorumlar, trackback/pingback'ler, süresi dolmuş geçici veriler. Clean All bunların hepsini çalıştırır ama Optimize Tables işlemini içermez; o ayrı bir düğmedir. Aynı ekranda MyISAM tabloları InnoDB'ye dönüştürme aracı da vardır.

Kısa kontrol listesi

AdımNeredeKontrol
PHP 8.3+Hosting paneliStaging'de test edildi mi?
Sayfa önbelleğiLiteSpeed CacheSepet/ödeme/hesap önbellek dışında mı?
ESICache > ESIWooCommerce ile açık mı?
Cart fragmentsTema / kodHer sayfada AJAX isteği var mı?
Object cacheLiteSpeed Cache > ObjectHosting Redis/Memcached sunuyor mu?
GörsellerLiteSpeed Cache > Image OptimizationTek optimizasyon eklentisi mi?
HPOSWooCommerce > Settings > Advanced > FeaturesUyumsuz eklenti var mı?
Arka plan görevleriWooCommerce > Status > Scheduled ActionsGecikmiş/başarısız görev birikiyor mu?
VeritabanıLiteSpeed Cache > DatabaseYedek alındı mı?

Sık Sorulan Sorular

WooCommerce paylaşımlı hostingde hızlı çalışır mı?

Küçük ve orta ölçekli mağazalar için evet, şartıyla: güncel PHP, sunucu seviyesinde sayfa önbelleği, optimize edilmiş görseller ve düzenli çalışan arka plan görevleri. Trafik ve sipariş hacmi arttıkça sepet ve ödeme sayfaları (önbelleğe alınamadıkları için) sunucu kaynağını belirleyen sayfalar olur; bu noktada object cache ve daha güçlü bir paket gündeme gelir.

Ödeme sayfasını da önbelleğe alırsam daha hızlı olmaz mı?

Olmaz, bozulur. Ödeme sayfası her müşteriye özel sepet, tutar ve güvenlik anahtarı (nonce) içerir. Önbelleğe alınırsa "oturum süresi doldu" gibi hatalar başlar. Belirtiler ve çözümleri için ödeme sayfası hataları yazısına bakın.

HPOS'a geçmek riskli mi?

Belgeye göre geçiş isteğe bağlıdır ve uyumluluk modu açıkken eski depolamaya anında dönülebilir. Risk, HPOS uyumlu olmayan eklentilerdedir; WooCommerce bunları geçişten önce listeler. Yedek alıp uyumluluk modunda bir süre izleyerek geçmek en güvenli yoldur.

Ödeme eklentileri hızı etkiler mi?

Ödeme eklentileri genellikle yalnızca ödeme sayfasında ve geri dönüş adreslerinde çalışır. Kurulum ve doğru yapılandırma için iyzico ve PayTR eklentileri yazısına bakın; geri bildirim (callback) adreslerinin önbelleğe alınmaması önemlidir.

Yazılım, eklenti ve hizmet adları sahiplerine aittir. Bu yazı bağımsız bir teknik rehberdir; adı geçen şirketlerle bayilik veya ortaklık ilişkisi bulunduğu anlamına gelmez.

İlgili içerikler: WooCommerce kurulumu · Ödeme sayfası hataları · WooCommerce, OpenCart ve PrestaShop karşılaştırması · LSCache rehberi · Core Web Vitals 2026 · Önbellek nedir? · WordPress hosting rehberi