İçeriğe geç
Önem Bilişim

WordPress Hızını Artıran Sunucu Tarafı Optimizasyonlar: Önbellek, Redis ve Veritabanı

WordPress sunucu tarafı optimizasyon: sayfa ve nesne önbelleği, Redis, autoload şişkinliği, Heartbeat ve wp-config ayarları. Kapasitenizi hesaplayıcıyla görün.

Hosting ve Alan Adı6 dk okuma
WordPress Hızını Artıran Sunucu Tarafı Optimizasyonlar: Önbellek, Redis ve Veritabanı
İçindekiler
  1. WordPress’te önbellek katmanları
  2. Sekiz sunucu tarafı optimizasyon
  3. Sunucu seviyesinde sayfa önbelleği
  4. Kalıcı nesne önbelleği (Redis)
  5. PHP sürümü, OPcache ve bellek limiti
  6. Autoload şişkinliğini temizleyin
  7. Heartbeat API’yi dizginleyin
  8. Görsel işleme ve dosya teslimi
  9. Etkisini ölçün: Önce ve sonra
  10. Eklenti önbelleği mi, sunucu önbelleği mi?
  11. Kapasitenizi hesaplayın: Önbelleksiz istekler
  12. Sıkça sorulan sorular
  13. WordPress’te nesne önbelleği nedir?
  14. Redis WordPress’i ne kadar hızlandırır?
  15. Autoload nedir, neden sorun olur?
  16. WordPress Heartbeat kapatılmalı mı?
  17. WordPress için ne kadar PHP belleği gerekir?
  18. Sunucu tarafı optimizasyon önbellek eklentisinin yerini tutar mı?
  19. Sonuç: Önbelleğin ulaşamadığı yerler

Önbellek eklentisini kurdunuz, görselleri sıkıştırdınız, PageSpeed puanı yükseldi. Ama yönetim paneli hâlâ ağır, arama sonuçları geç geliyor ve yorum yapan ziyaretçiler birkaç saniye bekliyor. Bunun nedeni, eklenti seviyesindeki optimizasyonların yalnızca önbelleğe alınabilen sayfaları hızlandırmasıdır. WordPress sunucu tarafı optimizasyon ise önbelleğe alınamayan her isteği hızlandırır.

Bu yazıda WordPress’e özgü sunucu tarafı ayarları anlatıyoruz: nesne önbelleği, sunucu seviyesinde sayfa önbelleği, veritabanındaki autoload şişkinliği, Heartbeat API ve wp-config sabitleri. PHP sürümü, OPcache ve cron gibi genel ayarları Linux hosting yönetimi yazımızda ele almıştık. Bu yazı onların üzerine kurulur ve WordPress hosting altyapısından en yüksek verimi almanızı hedefler.

KısacaWordPress’i sunucu tarafında hızlandırmak için beş katmana odaklanın: sunucu seviyesinde sayfa önbelleği, Redis gibi kalıcı nesne önbelleği, güncel PHP ve OPcache, şişmiş autoload verilerinin temizlenmesi ve Heartbeat ile gereksiz arka plan isteklerinin azaltılması. Bu ayarlar özellikle yönetim paneli, arama, sepet ve üye sayfaları gibi önbelleğe alınamayan istekleri hızlandırır.

WordPress’te önbellek katmanları

WordPress bir sayfayı oluştururken PHP kodunu çalıştırır, veritabanına onlarca sorgu gönderir ve sonucu HTML olarak döndürür. Her önbellek katmanı bu işin bir bölümünü atlar. Sayfa önbelleği tüm işi atlar ama yalnızca herkese aynı görünen sayfalarda çalışır. Nesne önbelleği ise veritabanı sorgularının sonuçlarını bellekte tutar ve kişiye özel sayfalarda bile işe yarar.

WordPress önbellek katmanları: tarayıcı, CDN, sayfa önbelleği, nesne önbelleği, OPcache ve MySQL
WordPress’te istek yolu: Sayfa önbelleği tüm işi atlar; nesne önbelleği ise önbelleğe alınamayan sayfalarda veritabanı yükünü azaltır.

Sekiz sunucu tarafı optimizasyon

WordPress sunucu tarafı 8 optimizasyon: sayfa önbelleği, nesne önbelleği, PHP ve OPcache, autoload temizliği, Heartbeat, revizyon sınırı, bellek limiti ve görsel işleme
Sekiz sunucu tarafı optimizasyon. İlk ikisi en büyük kazancı sağlar.

Sunucu seviyesinde sayfa önbelleği

Önbellek eklentilerinin çoğu, sayfanın hazır kopyasını oluşturur ama isteği yine de WordPress’e kadar getirir. Sunucu seviyesindeki sayfa önbelleği ise, örneğin LiteSpeed Cache ya da Nginx FastCGI önbelleği, isteği PHP çalışmadan doğrudan web sunucusundan yanıtlar. Fark özellikle trafik zirvelerinde belirginleşir. Hostinginizin web sunucusu hangisiyse ona uygun önbellek çözümünü kullanın.

Kalıcı nesne önbelleği (Redis)

WordPress’in kendi nesne önbelleği yalnızca tek bir istek boyunca yaşar. Redis ya da Memcached gibi kalıcı bir nesne önbelleği, sorgu sonuçlarını istekler arasında da saklar. Seçenekler, menüler, kullanıcı oturumları ve WooCommerce sepet verileri tekrar tekrar veritabanından okunmaz. Sunucunuzda Redis varsa ilgili eklentiyi kurup WP-CLI ile etkinleştirebilirsiniz:

wp plugin install redis-cache --activate
wp redis enable

PHP sürümü, OPcache ve bellek limiti

Güncel PHP 8 sürümü ve açık OPcache, WordPress’in her isteğinde yüzlerce PHP dosyasının yeniden derlenmesini önler. WordPress’in kullanabileceği belleği wp-config.php dosyasında açıkça belirtmek, ağır eklentilerin “memory exhausted” hatasıyla durmasını engeller:

define('WP_MEMORY_LIMIT', '256M');
define('WP_POST_REVISIONS', 10);
define('EMPTY_TRASH_DAYS', 14);

İkinci satır her yazı için saklanacak revizyon sayısını sınırlar, üçüncüsü çöp kutusunun 14 günde bir boşaltılmasını sağlar. İkisi de veritabanının gereksiz yere büyümesini önler.

Autoload şişkinliğini temizleyin

WordPress, wp_options tablosunda “autoload” olarak işaretli tüm ayarları her istekte belleğe yükler. Kaldırılmış eklentilerin bıraktığı ayarlar ve bazı eklentilerin buraya yazdığı büyük veriler bu yükü megabaytlara çıkarabilir. Toplam boyutu ve en büyük kayıtları phpMyAdmin’de şu sorgularla görebilirsiniz (tablo öneki farklıysa wp_ kısmını değiştirin):

SELECT ROUND(SUM(LENGTH(option_value)) / 1024) AS autoload_kb
FROM wp_options WHERE autoload IN ('yes', 'on', 'auto-on', 'auto');

SELECT option_name, LENGTH(option_value) AS boyut
FROM wp_options WHERE autoload IN ('yes', 'on', 'auto-on', 'auto')
ORDER BY boyut DESC LIMIT 10;

Toplam 1 MB’ın üzerindeyse incelemeye değer. Artık kullanmadığınız eklentilere ait kayıtları yedek aldıktan sonra silebilir ya da autoload değerini kapatabilirsiniz.

Heartbeat API’yi dizginleyin

Heartbeat, yönetim panelinde açık her sekmenin sunucuya düzenli aralıklarla istek göndermesini sağlar. Otomatik kaydetme ve oturum kontrolü için faydalıdır ama birden fazla editörün aynı anda çalıştığı sitelerde sunucuyu gereksiz yere meşgul eder. Aralığı uzatmak için temanızın functions.php dosyasına ya da küçük bir eklentiye şu kodu ekleyebilirsiniz:

add_filter('heartbeat_settings', function ($ayar) {
    $ayar['interval'] = 60;
    return $ayar;
});

Görsel işleme ve dosya teslimi

WordPress yüklenen her görsel için birden fazla boyut üretir. Kullanılmayan görsel boyutlarını kapatmak hem disk alanından hem de yükleme süresinden tasarruf sağlar. Görsellerin WebP formatında sunulması ve statik dosyalar için uzun tarayıcı önbelleği süreleri, sunucuya gelen istek sayısını azaltır.

Etkisini ölçün: Önce ve sonra

Her optimizasyonun gerçekten işe yarayıp yaramadığını ölçmek gerekir. Bunun için en pratik araç, WordPress için geliştirilmiş ücretsiz Query Monitor eklentisidir. Yönetici olarak giriş yaptığınızda her sayfanın kaç veritabanı sorgusu yaptığını, bu sorguların toplam süresini, en yavaş sorguları ve hangi eklentiden geldiklerini gösterir. Nesne önbelleğini etkinleştirmeden önce ve sonra aynı sayfadaki sorgu sayısını karşılaştırmak, kazancı somut olarak görmenizi sağlar.

İkinci ölçüm sunucu yanıt süresidir. Önbelleğe alınamayan bir sayfanın, örneğin bir arama sonuç sayfasının TTFB değerini optimizasyondan önce ve sonra ölçün. Yönetim panelinde ise admin-ajax.php isteklerinin sayısı ve süresi, tarayıcının geliştirici araçlarındaki Ağ sekmesinden izlenebilir. Heartbeat ayarından sonra bu isteklerin seyrekleştiğini görmelisiniz. Ölçümleri tamamladıktan sonra Query Monitor’ü devre dışı bırakın, çünkü kendisi de küçük bir yük getirir.

Eklenti önbelleği mi, sunucu önbelleği mi?

KriterEklenti tabanlı sayfa önbelleğiSunucu seviyesinde önbellek
İsteğin yoluWordPress yüklenir, önbellekten dönerPHP çalışmadan web sunucusundan döner
Yoğun trafiktePHP süreçleri yine meşgul olurPHP süreçleri serbest kalır
KurulumHerhangi bir hostingde çalışırSunucunun desteklemesi gerekir
Önbellek temizlemeEklenti yönetirEklenti ile entegre çalışır
WordPress'te eklenti tabanlı önbellek ile sunucu seviyesinde önbellek karşılaştırması
Sunucu seviyesindeki önbellek, isteği PHP’ye hiç ulaştırmadan yanıtlar; yoğun anlarda en büyük fark buradan gelir.

Kapasitenizi hesaplayın: Önbelleksiz istekler

Önbelleğe alınamayan istekler (yönetim paneli, arama, sepet, ödeme, üye sayfaları) her seferinde PHP çalıştırır. Bu isteklerin aynı anda kaçının işlenebileceğini CPU limitiniz, ne kadar sürede işlendiğini ise yukarıdaki optimizasyonlar belirler. Aşağıdaki araç bu ikisinden yaklaşık kapasitenizi hesaplar.

WordPress kapasite hesaplayıcı
Kaba bir tahmindir; gerçek kapasite bellek, disk ve veritabanı yüküne de bağlıdır.
Eş zamanlı PHP işlemi–
Önbelleksiz istek / sn–
Toplam sayfa / dakika–

Hesaplama, sunucu tarafı optimizasyonun neden önemli olduğunu açıkça gösterir: Önbelleksiz bir isteğin süresini 800 ms’den 300 ms’ye indirmek, aynı CPU limitiyle kapasiteyi iki buçuk katından fazla artırır. Bu iyileştirmelere rağmen kapasite yetmiyorsa Önem Bilişim’in NVMe diskli WordPress hosting paketleri %400 ile %800 arasında CPU limiti sunar.

İlginizi çekebilir: SSD hosting Core Web Vitals’ı nasıl etkiler? TTFB ve LCP ilişkisi

Sıkça sorulan sorular

WordPress’te nesne önbelleği nedir?

Nesne önbelleği, veritabanı sorgularının sonuçlarını bellekte saklayan katmandır. WordPress’in yerleşik nesne önbelleği yalnızca bir istek boyunca yaşar. Redis ya da Memcached gibi kalıcı bir önbellek ise sonuçları istekler arasında saklar ve özellikle yönetim paneli, üye sayfaları ve WooCommerce gibi önbelleğe alınamayan bölümleri hızlandırır.

Redis WordPress’i ne kadar hızlandırır?

Etkisi sitenin yapısına bağlıdır. Çok sayıda eklenti ve veritabanı sorgusu kullanan sitelerde, özellikle WooCommerce mağazalarında ve üyelik sitelerinde önbelleğe alınamayan sayfaların yanıt süresi belirgin şekilde kısalır. Basit ve tamamen sayfa önbelleğinden sunulan bloglarda fark daha küçüktür.

Autoload nedir, neden sorun olur?

Autoload, wp_options tablosunda her istekte otomatik olarak belleğe yüklenen ayarları işaretler. Kaldırılan eklentilerin bıraktığı kayıtlar ve büyük veriler bu yükü artırdığında her sayfa açılışı gereksiz yere yavaşlar. Toplam boyutu düzenli kontrol edip kullanılmayan kayıtları temizlemek iyi bir bakım alışkanlığıdır.

WordPress Heartbeat kapatılmalı mı?

Tamamen kapatmak otomatik kaydetme ve oturum uyarıları gibi özellikleri bozabilir. Bunun yerine aralığını uzatmak ve yalnızca yazı düzenleme ekranında çalışmasını sağlamak daha güvenli bir yaklaşımdır. Birden fazla editörün aynı anda çalıştığı sitelerde bu ayar sunucu yükünü belirgin şekilde azaltır.

WordPress için ne kadar PHP belleği gerekir?

Çoğu WordPress sitesi için 256 MB güvenli bir değerdir. Sayfa oluşturucu ve WooCommerce gibi ağır eklentiler kullanan siteler daha fazlasına ihtiyaç duyabilir. WP_MEMORY_LIMIT değeri, hostinginizin PHP bellek sınırını aşamaz. Daha yüksek bir değere ihtiyacınız varsa önce hosting panelinizdeki PHP ayarlarını kontrol edin.

Sunucu tarafı optimizasyon önbellek eklentisinin yerini tutar mı?

Tutmaz, birbirini tamamlar. Önbellek eklentisi ya da sunucu seviyesindeki sayfa önbelleği herkese aynı görünen sayfaları hızlandırır. Sunucu tarafı optimizasyon ise önbelleğe alınamayan yönetim paneli, arama, sepet ve üye sayfalarını hızlandırır. En iyi sonuç ikisi birlikte kullanıldığında alınır.

Sonuç: Önbelleğin ulaşamadığı yerler

WordPress sunucu tarafı optimizasyon, önbellek eklentilerinin ulaşamadığı istekleri hızlandırır: yönetim paneli, arama, sepet ve üye sayfaları. Sunucu seviyesinde önbellek, kalıcı nesne önbelleği, temiz bir veritabanı ve kontrol altındaki arka plan istekleri, aynı donanımdan çok daha fazla kapasite almanızı sağlar.

WordPress siteleriniz için geniş kaynaklı bir altyapı arıyorsanız Önem Bilişim WordPress hosting paketlerini inceleyebilirsiniz. WordPress ve performans üzerine diğer yazılarımız Önem Bilişim blogunda yer alıyor.

WordPress hosting

WordPress siteniz için ayarlanmış altyapı

NVMe SSD, %800’e varan CPU ve 75 MB/s’ye varan IO limiti, limitsiz MySQL veritabanı ile 1 ila 15 WordPress sitesini tek pakette çalıştırın.

Paylaş:WhatsAppXFacebookLinkedInTelegram

Bunlar da ilginizi çekebilir