WooCommerce Neden Yavaşlar? Performans Optimizasyonu Rehberi

WooCommerce sitenizin yavaşlaması, yalnızca sayfanın geç açılması anlamına gelmez. Ürün listeleme, varyasyon seçimi, filtreleme, sepete ekleme, sepet, ödeme ve müşteri hesabı gibi farklı işlemler aynı WordPress ve veritabanı altyapısını kullanır. Bu nedenle WooCommerce performans optimizasyonunda yalnızca frontend dosyalarına veya bir cache eklentisine bakmak yeterli değildir. Sunucu, PHP, veritabanı, object cache, WooCommerce sorguları, eklentiler ve dinamik işlemler birlikte değerlendirilmelidir.

Hızlı Cevap: WooCommerce Neden Yavaşlar?

WooCommerce siteleri genellikle tek bir nedenden dolayı yavaşlamaz. Performans problemi; dinamik PHP işlemleri, veritabanı sorguları, ağır eklentiler, ürün ve varyasyon yapısı, filtreleme sistemleri, üçüncü parti API istekleri, arka plan görevleri veya yanlış yapılandırılmış cache katmanlarının bir veya birkaçından kaynaklanabilir.

  • Dinamik PHP İşlemleri: Sepet, checkout, hesap ve diğer kullanıcıya özel işlemler page cache’den farklı bir performans modeliyle çalışır.
  • Veritabanı Sorguları: Büyük kataloglar, karmaşık sorgular, meta verileri ve kötü optimize edilmiş eklentiler veritabanı yükünü artırabilir.
  • Object Cache Eksikliği: Tekrarlanan veritabanı erişimleri persistent object cache ile azaltılabilir.
  • Ürün Filtreleri ve Arama: Özellikle büyük kataloglarda yanlış tasarlanmış filtreleme ve arama sorguları ciddi işlem yükü oluşturabilir.
  • Arka Plan Görevleri: Action Scheduler, WP-Cron ve eklentilerin oluşturduğu görevlerin birikmesi kaynak tüketimini artırabilir.
  • Eklenti ve Entegrasyonlar: Ödeme, kargo, ERP, CRM, stok ve diğer API bağlantıları yanıt sürelerini etkileyebilir.

Bu nedenle WooCommerce’i hızlandırmanın doğru yöntemi, önce hangi katmanın darboğaz oluşturduğunu ölçmek ve daha sonra yalnızca gerekli katmana müdahale etmektir.

1. Önce WooCommerce Performans Problemini Ölçün

Yavaş bir WooCommerce sitesinde yapılabilecek en büyük hatalardan biri, sorunun kaynağını belirlemeden optimizasyon yapmaya başlamaktır.

Ana sayfanın hızlı açılması, ürün sayfasının veya checkout işleminin de hızlı olduğu anlamına gelmez. Çünkü WooCommerce’in farklı sayfa ve işlemleri farklı miktarlarda PHP ve veritabanı işlemi gerçekleştirebilir.

Bu nedenle performans analizi sırasında yalnızca ana sayfayı değil; ürün, kategori, arama, sepet, checkout ve müşteri hesabı gibi farklı senaryoları ayrı ayrı incelemek gerekir.

Kontrol Edilmesi Gereken Katmanlar

  • TTFB: Sunucunun isteğe yanıt vermeye başlamasının ne kadar sürdüğünü değerlendirin.
  • PHP: Uzun süren işlemleri ve PHP-FPM kaynak kullanımını inceleyin.
  • Veritabanı: Yavaş sorguları, sorgu sayısını ve veritabanı kaynak kullanımını analiz edin.
  • Object Cache: Tekrarlanan veri erişimlerinin cache’lenip cache’lenmediğini kontrol edin.
  • Frontend: JavaScript, CSS, görseller ve üçüncü parti kaynakların tarayıcı üzerindeki yükünü değerlendirin.
  • Arka Plan Görevleri: Action Scheduler ve cron görevlerinde bekleyen veya başarısız işlemleri kontrol edin.

2. Cart Fragments Gereksiz Yere Çalışıyor mu?

wc-cart-fragments, WooCommerce’in eski Mini Cart Widget yapısının sepet bilgisini AJAX üzerinden güncellemesini sağlayan mekanizmalardan biridir. Ancak güncel WooCommerce sürümlerinde bu script artık bütün sayfalarda varsayılan olarak global şekilde yüklenmemektedir.

WooCommerce 7.8 ile birlikte Cart Fragments scriptinin global enqueue edilmesi kaldırıldı. Script özellikle Mini Cart Widget kullanıldığında veya tema/eklenti tarafından tekrar bir bağımlılık olarak çağrıldığında devreye girebilir.

Bu nedenle eski yöntemlerde olduğu gibi bütün sitelerde doğrudan get_refreshed_fragments isteğini kapatmak doğru bir performans stratejisi değildir. Önce sitenin gerçekten bu mekanizmayı kullanıp kullanmadığı ve hangi sayfalarda çalıştığı tespit edilmelidir.

MÜHENDİSLİK SIRRI: Cart Fragments’ı Körlemesine Kapatmayın

Cart Fragments kullanan bir Mini Cart yapısını koşulsuz olarak devre dışı bırakmak, performans kazanımı yerine sepet bilgisinin güncellenmemesine veya tema/eklenti işlevlerinin bozulmasına neden olabilir. Daha doğru yaklaşım, kullanılmayan Cart Fragments bağımlılıklarını tespit etmek veya WooCommerce’in modern Mini Cart Block yapısını değerlendirmektir.

3. Veritabanı Yapısını ve HPOS’u Kontrol Edin

WooCommerce sitelerinde performansın önemli bir bölümü veritabanı erişimlerine bağlıdır. Özellikle yüksek sipariş hacmi, çok sayıda ürün varyasyonu, yoğun meta verisi ve karmaşık eklenti sorguları zaman içerisinde veritabanı yükünü artırabilir.

Burada önemli bir ayrım vardır: WordPress’in wp_posts ve wp_postmeta tablolarının büyük olması tek başına sitenin yavaş olduğu anlamına gelmez. Asıl problem, bu tablolar üzerinde çalışan sorguların nasıl oluşturulduğu, hangi verilerin arandığı ve sorguların ne kadar verimli çalıştığıdır.

HPOS Neden Önemlidir?

WooCommerce’in High-Performance Order Storage (HPOS) sistemi, sipariş verilerini WordPress’in klasik post ve postmeta yapısından ayrı, WooCommerce için tasarlanmış özel tablolarda saklar.

HPOS; siparişler, adresler, operasyonel veriler ve sipariş meta verileri için özel tablolar ve indeksler kullanarak daha uygun bir veri yapısı sağlar. WooCommerce dokümantasyonuna göre bu yapı daha az tablo yoğunluğu ve daha verimli okuma/yazma işlemleri sağlayarak ölçeklenebilirliği artırmayı amaçlar.

HPOS’a Geçmeden Önce

  • Aktif eklentilerin HPOS uyumluluğunu kontrol edin.
  • Mevcut sipariş verilerinin senkronizasyon durumunu kontrol edin.
  • Özel kodların doğrudan wp_posts veya wp_postmeta üzerinden sipariş sorgulayıp sorgulamadığını inceleyin.
  • Geçişi doğrudan canlı sistem üzerinde kontrolsüz şekilde yapmak yerine yedek ve test sürecini planlayın.

HPOS güçlü bir WooCommerce performans bileşenidir ancak bütün veritabanı problemlerinin otomatik çözümü değildir. Ürün sorguları, postmeta kullanımı, eklenti tabloları ve özel SQL sorguları ayrıca incelenmelidir.

4. Page Cache Yetmediğinde Object Cache Devreye Girer

Page Cache ile Object Cache aynı işi yapmaz. Page Cache, uygun sayfaların oluşturulmuş HTML çıktısını tekrar kullanmaya yardımcı olurken Object Cache, WordPress’in uygulama katmanında tekrar ihtiyaç duyduğu verilerin yeniden hesaplanmasını veya tekrar veritabanından okunmasını azaltabilir.

WooCommerce’in sepet, checkout, müşteri hesabı ve diğer dinamik işlemlerinde her isteğin tamamen statik HTML olarak cache’lenmesi mümkün değildir. Bu nedenle dinamik isteklerde PHP ve veritabanı katmanlarının performansı daha önemli hale gelir.

Persistent Object Cache için Redis veya Memcached gibi sistemler kullanılabilir. Ancak object cache’i yalnızca “Redis kuruldu ve site hızlandı” şeklinde düşünmek doğru değildir. Cache hit oranı, kullanılan verinin niteliği, veritabanı sorguları ve uygulamanın cache’i nasıl kullandığı birlikte değerlendirilmelidir.

MÜHENDİSLİK SIRRI: Page Cache ≠ Object Cache

Page Cache, hazır sayfa çıktılarının tekrar kullanılmasına; Object Cache ise uygulamanın tekrar ihtiyaç duyduğu verilerin cache’lenmesine yardımcı olur. WooCommerce performansında bu iki katmanı birbirinin alternatifi olarak değil, farklı görevleri olan sistemler olarak değerlendirmek gerekir.

5. AJAX Filtreler ve Ürün Arama Sorgularını İnceleyin

Büyük ürün kataloglarında filtreleme sistemi önemli bir performans darboğazı haline gelebilir. Marka, renk, beden, fiyat, model veya teknik özellik gibi birden fazla kriterin aynı anda sorgulanması; kullanılan eklentiye, veri yapısına ve sorgunun nasıl oluşturulduğuna bağlı olarak veritabanı yükünü artırabilir.

Özellikle her filtre değişiminde AJAX isteği gönderilen sistemlerde kullanıcı tek bir işlem yaparken arka planda çok sayıda istek oluşabilir.

Bu nedenle filtre performansını değerlendirirken yalnızca “kaç ürün var?” sorusuna bakmak yeterli değildir. Sorguların nasıl oluşturulduğu, kullanılan tablolar ve indeksler, AJAX isteklerinin sayısı ve filtreleme eklentisinin mimarisi birlikte incelenmelidir.

Daha büyük kataloglarda özel indeksler, uygun veri yapıları veya arama motorları kullanılabilir. Ancak Elasticsearch gibi bir sistemi yalnızca ürün sayısı yüksek olduğu için kurmak da doğru değildir. Önce mevcut sorgunun gerçekten darboğaz oluşturduğu ölçülmelidir.

6. Eklentiler ve Üçüncü Parti Entegrasyonları Performansı Etkileyebilir

WooCommerce mağazalarında performans sorunlarının kaynağı her zaman WooCommerce çekirdeği değildir. Ödeme, kargo, ERP, CRM, stok, pazarlama, arama, filtreleme ve analitik eklentileri her istekte PHP veya veritabanı işlemleri gerçekleştirebilir.

Özellikle harici bir API’ye senkron şekilde bağlanan bir işlemde, üçüncü parti servisin yanıt süresi WooCommerce isteğinin toplam süresini doğrudan etkileyebilir.

  • Ödeme API istekleri
  • Kargo fiyatı ve teslimat sorguları
  • ERP ve stok senkronizasyonları
  • CRM entegrasyonları
  • Ürün arama ve filtreleme sistemleri
  • Analitik ve pazarlama scriptleri
  • Otomatik e-posta ve webhook işlemleri

Bu nedenle yavaş bir WooCommerce sitesinde “hangi eklentileri kullanıyorsunuz?” sorusu kadar, bu eklentilerin hangi sayfalarda hangi işlemleri gerçekleştirdiği de önemlidir.

7. Action Scheduler ve WP-Cron Kuyruklarını Kontrol Edin

WooCommerce ve eklentiler, sipariş bildirimleri, webhook’lar, abonelikler ve çeşitli otomasyonlar için arka plan görevleri oluşturabilir. WooCommerce bu görevlerin önemli bir bölümünde Action Scheduler sistemini kullanır.

Action Scheduler, görevleri kuyruk halinde işleyebilen ölçeklenebilir bir job queue sistemidir. Ancak görevlerin tetiklenmesi ve işlenmesi için kullanılan cron mekanizmasının doğru yapılandırılması önemlidir.

WordPress’in WP-Cron sistemi site ziyaretleri üzerinden tetiklendiği için trafik karakterine bağlı olarak görevlerin gecikmesi veya yoğun trafikte gereksiz işlem yükü oluşması mümkündür. WooCommerce dokümantasyonu da gerçek server-side cron kullanımının bu bağımlılığı azaltabileceğini belirtmektedir.

Kontrol Listesi

  • Pending: Bekleyen görev sayısını kontrol edin.
  • Failed: Sürekli başarısız olan görevleri tespit edin.
  • Scheduled: Aşırı sayıda planlanmış görev olup olmadığını inceleyin.
  • WP-Cron: Cron tetikleme modelini ve sunucu kaynak kullanımını değerlendirin.
  • Server Cron: Gerektiğinde cron işlemlerini sunucu seviyesinde planlayın.

8. Ürün Varyasyonları ve Büyük Katalog Yapısını İnceleyin

WooCommerce’te ürün sayısının yüksek olması tek başına performans probleminin nedeni değildir. Daha önemli olan; ürünlerin kaç varyasyona sahip olduğu, hangi meta verilerin kullanıldığı, filtreleme ve arama sisteminin nasıl çalıştığı ve bu verilerin hangi sorgularla getirildiğidir.

Örneğin yüzlerce varyasyona sahip ürünler; fiyat, stok, görsel ve özellik gibi farklı verilerin yönetilmesi nedeniyle daha karmaşık işlemler oluşturabilir.

Bu nedenle büyük kataloglarda performans analizi yapılırken yalnızca toplam ürün sayısı değil, ürün başına varyasyon sayısı, sorgu yapısı, veritabanı indeksleri ve kullanılan eklentiler birlikte değerlendirilmelidir.

9. PHP, PHP-FPM ve Sunucu Kaynaklarını Kontrol Edin

WooCommerce’in dinamik işlemleri PHP üzerinden çalıştığı için PHP-FPM ve sunucu kaynakları özellikle önemlidir. Yavaş bir checkout veya admin paneli problemi, yalnızca frontend optimizasyonuyla çözülemeyebilir.

CPU, RAM, disk I/O, PHP-FPM process sayıları ve veritabanı kaynak kullanımı gerçek trafik altında izlenmelidir.

  • PHP: Güncel ve kullanılan WooCommerce/eklenti ekosistemiyle uyumlu bir sürüm kullanın.
  • PHP-FPM: Worker ve process yapılandırmasını trafik ve mevcut RAM/CPU kapasitesine göre değerlendirin.
  • OPcache: PHP kodunun tekrar tekrar derlenmesini azaltmak için doğru yapılandırıldığından emin olun.
  • Web Server: Nginx veya Apache yapılandırmasını uygulamanın ihtiyaçlarına göre optimize edin.
  • Veritabanı: CPU veya I/O darboğazının gerçekten veritabanından kaynaklanıp kaynaklanmadığını ölçün.

Burada amaç yalnızca daha güçlü bir sunucu satın almak değildir. Önce mevcut sistemde kaynağın nerede tüketildiğini bulmak, ardından gerekli katmanı ölçeklendirmek daha doğru yaklaşımdır.

10. WooCommerce Cache Mimarisi Dinamik Sayfaları Korumalıdır

WooCommerce performansında page cache önemli bir avantaj sağlayabilir ancak bütün URL’lerin aynı şekilde cache’lenmesi doğru değildir.

Ürün ve kategori gibi cache edilebilir sayfalar ile kullanıcıya özel sepet, checkout ve hesap işlemleri farklı değerlendirilmelidir.

Yanlış yapılandırılmış bir cache sistemi; kullanıcı sepetlerinin, oturum bilgilerinin veya kişiselleştirilmiş içeriklerin yanlış kullanıcıya gösterilmesi gibi ciddi problemlere neden olabilir.

Bu nedenle WooCommerce cache mimarisinde performans kadar cache bypass kuralları, cookie davranışları, kullanıcı oturumları ve dinamik AJAX/Store API istekleri de kontrol edilmelidir.

WooCommerce sitenizdeki performans problemi yalnızca bir cache eklentisiyle çözülemiyorsa; PHP, veritabanı, object cache, WooCommerce sorguları, sunucu kaynakları ve dinamik işlemlerin birlikte analiz edilmesi gerekir.

WooCommerce Performans Optimizasyonu

Sonuç: WooCommerce Hızlandırma Tek Bir Eklentiyle Yapılmaz

WooCommerce performansı; PHP, veritabanı, cache, object cache, ürün yapısı, eklentiler, üçüncü parti servisler ve sunucu altyapısının birlikte oluşturduğu sistemin sonucudur.

Bu nedenle yavaş bir WooCommerce sitesinde ilk yapılması gereken işlem daha fazla cache veya daha güçlü bir sunucu eklemek değil, darboğazın nerede olduğunu ölçmektir.

Doğru bir performans çalışmasında önce problem tespit edilir; ardından gerekiyorsa veritabanı sorguları, HPOS, Redis Object Cache, Action Scheduler, filtreleme sistemi, PHP-FPM, eklentiler veya cache mimarisi ayrı ayrı optimize edilir.

Özellikle yüksek trafik alan veya büyük ürün kataloglarına sahip mağazalarda amaç yalnızca ana sayfayı hızlı göstermek değil; ürün görüntüleme, sepete ekleme, ödeme ve sipariş oluşturma gibi kritik ticari işlemleri de kararlı ve ölçülebilir bir performansla çalıştırmaktır.

WooCommerce Performansı Hakkında Sıkça Sorulan Sorular

WooCommerce sitem neden yavaş?
WooCommerce sitesinin yavaşlamasının tek bir nedeni yoktur. PHP işlemleri, veritabanı sorguları, ağır eklentiler, ürün varyasyonları, filtreleme sistemleri, üçüncü parti API’ler, Action Scheduler görevleri ve yanlış cache yapılandırması performansı etkileyebilir. Önce hangi katmanın darboğaz oluşturduğunu ölçmek gerekir.
Cart Fragments WooCommerce sitesini yavaşlatır mı?
Bazı yapılarda Cart Fragments ek AJAX istekleri oluşturabilir. Ancak güncel WooCommerce sürümlerinde bu script artık bütün sayfalarda varsayılan olarak global şekilde yüklenmemektedir. Özellikle Mini Cart Widget kullanan veya teması/eklentisi Cart Fragments’ı tekrar çağıran sitelerde kontrol edilmelidir.
Redis WooCommerce’i hızlandırır mı?
Uygun yapılandırılmış persistent object cache, WordPress’in tekrar ihtiyaç duyduğu bazı verilerin yeniden oluşturulmasını veya veritabanından tekrar okunmasını azaltabilir. Ancak Redis page cache’in yerine geçmez ve tek başına bütün WooCommerce performans problemlerini çözmez.
HPOS WooCommerce’i hızlandırır mı?
HPOS, sipariş verilerini WooCommerce için tasarlanmış özel tablolarda ve indekslerde saklayarak sipariş verilerinin yönetimi ve ölçeklenmesi için daha uygun bir veri yapısı sağlar. Ancak HPOS’un etkinleştirilmesi ürün sorguları, eklentiler veya diğer veritabanı problemlerini otomatik olarak çözmez. Geçiş öncesinde kullanılan eklentilerin HPOS uyumluluğu kontrol edilmelidir.
Çok fazla ürün WooCommerce’i yavaşlatır mı?
Yalnızca ürün sayısının yüksek olması tek başına performans problemi anlamına gelmez. Ürünlerin varyasyon yapısı, filtreleme ve arama sorguları, veritabanı yapısı, eklentiler ve sunucu kaynakları daha belirleyici olabilir.
WooCommerce performansı nasıl ölçülür?
Ana sayfanın yanında ürün, kategori, arama, sepet ve checkout gibi kritik sayfalar ayrı ayrı test edilmelidir. TTFB, PHP işlem süreleri, veritabanı sorguları, CPU, RAM, disk I/O, AJAX istekleri ve Action Scheduler görevleri birlikte incelenerek darboğazın hangi katmanda olduğu belirlenebilir.