Rehber WordPress'i Sunucu Tarafında Hızlandırmak: PHP Sürümü, OPcache ve Nesne Önbelleği

WordPress hızlandırma denince çoğu zaman ilk akla gelen önbellek eklentileridir. Eklenti seçerken yapılan hataları forumdaki önbellek eklentileri yazısında ele almıştık. Bu yazıda madalyonun diğer yüzüne, eklentiden bağımsız olarak sunucuda yapılabilecek iyileştirmelere bakıyoruz. Özellikle VDS kullananlar için bu ayarlar, sayfanın ilk bayta kadar geçen süresini (TTFB) ciddi biçimde düşürebilir.

Önce ölçün​

İyileştirmenin etkisini görmek için bir başlangıç değeri alın:
Bash:
curl -o /dev/null -s -w 'TTFB: %{time_starttransfer}s  Toplam: %{time_total}s\n' https://alanadiniz.com/
Komutu birkaç kez çalıştırıp ortalamaya bakın; önbelleğe alınmış ve alınmamış sayfaları ayrı ayrı ölçün.

1. Güncel PHP sürümü​

WordPress'in önerdiği sürüm PHP 8.3. Yeni PHP sürümleri hem daha hızlı hem de güvenlik desteği devam eden sürümlerdir; php.net'e göre PHP 8.2'nin güvenlik desteği 31 Aralık 2026'da bitiyor. Sürüm yükseltmeden önce eklenti ve tema uyumluluğunu bir test kopyasında denemeyi unutmayın.

2. OPcache'i doğru ayarlayın​

OPcache, derlenmiş PHP kodunu bellekte tutarak her istekte yeniden derlemeyi önler. Çoğu kurulumda açıktır ama varsayılan değerler büyük WordPress siteleri için küçük kalabilir. PHP yapılandırmanıza (ör. /etc/php/8.3/fpm/conf.d/ altında ayrı bir dosya) şu değerlerle başlayabilirsiniz:
INI:
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=20000
opcache.validate_timestamps=1
opcache.revalidate_freq=60
revalidate_freq=60, dosya değişikliklerinin en geç 60 saniyede fark edileceği anlamına gelir. Ardından PHP-FPM'i yeniden başlatın:
Bash:
sudo systemctl restart php8.3-fpm

3. PHP-FPM süreç sayısı​

Aynı anda kaç PHP isteği işlenebileceğini pm.max_children belirler. Çok düşükse istekler kuyrukta bekler, çok yüksekse sunucu belleği tükenir. Ortalama süreç boyutunu görmek için:
Bash:
ps -ylC php-fpm8.3 --sort:rss | awk 'NR>1 {sum+=$8; n++} END {print "Ortalama:", sum/n/1024, "MB"}'
PHP'ye ayırabileceğiniz belleği bu ortalamaya bölerek güvenli bir üst sınır bulabilirsiniz. Örneğin 2 GB bellek ayırabiliyorsanız ve süreçler ortalama 80 MB ise 20-25 civarı makul bir başlangıçtır.

4. Redis ile nesne önbelleği​

Nesne önbelleği, WordPress'in tekrar tekrar yaptığı veritabanı sorgularının sonuçlarını bellekte tutar. Özellikle WooCommerce, üyelik ve forum eklentileri gibi dinamik sitelerde etkisi büyüktür.
Bash:
sudo apt install -y redis-server php8.3-redis
sudo systemctl restart php8.3-fpm
Ardından "Redis Object Cache" eklentisini kurup etkinleştirin. Aynı Redis sunucusunu birden fazla site kullanacaksa her sitenin wp-config.php dosyasında farklı bir önek tanımlayın:
PHP:
define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_PORT', 6379 );
define( 'WP_REDIS_PREFIX', 'site1_' );

5. WP-Cron'u sistem zamanlayıcısına taşıyın​

WP-Cron varsayılan olarak ziyaretçi istekleriyle tetiklenir; bu da yoğun sitelerde gereksiz yük, az ziyaretçili sitelerde ise geciken görevler demektir. wp-config.php dosyasına:
PHP:
define( 'DISABLE_WP_CRON', true );
ekleyip sunucunun crontab'ına WP-CLI ile bir görev tanımlayın:
Kod:
*/5 * * * * wp --path=/var/www/alanadiniz cron event run --due-now > /dev/null 2>&1

6. Şişmiş autoload seçeneklerini kontrol edin​

Her sayfa yüklemesinde otomatik okunan seçenekler zamanla eklenti artıklarıyla şişebilir. Toplam boyutu görmek için (tablo önekiniz farklıysa değiştirin):
SQL:
SELECT ROUND(SUM(LENGTH(option_value))/1024) AS kb
FROM wp_options
WHERE autoload IN ('yes', 'on', 'auto-on', 'auto');
Değer birkaç megabayta yaklaşıyorsa hangi seçeneklerin büyük olduğunu inceleyip kaldırılmış eklentilerden kalanları temizlemek faydalı olur. Silmeden önce mutlaka yedek alın.

Veritabanı sunucusu için kısa not​

MySQL ya da MariaDB aynı VDS'te çalışıyorsa innodb_buffer_pool_size değerinin veritabanının sık kullanılan kısmını bellekte tutabilecek kadar büyük olması önemlidir. Yalnızca veritabanına ayrılmış bir sunucuda bu değer toplam belleğin yarısı ile üçte ikisi arasında tutulur; PHP ve web sunucusuyla paylaşılan bir sunucuda ise diğer servislere yer bırakacak şekilde daha düşük seçilmelidir. Yavaş sorgu günlüğünü (slow query log) kısa süreliğine açmak, hangi eklentinin veritabanını yorduğunu bulmanın en pratik yoludur.

7. Görseller ve HTTP katmanı​

WordPress çekirdeği WebP ve AVIF formatlarını destekliyor; görselleri bu formatlarda sunmak sayfa boyutunu küçültür. Web sunucunuzda HTTP/2 (mümkünse HTTP/3) ve Brotli ya da gzip sıkıştırmanın açık olduğundan emin olun.

Bu adımlardan sonra ölçümü tekrarlayın ve farkı not edin. Siz sunucu tarafında hangi ayarla en büyük kazancı elde ettiniz? Sonuçlarınızı rakamlarıyla paylaşırsanız başkalarına da yol gösterir.
 
Geri
En Üst