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.
Komutu birkaç kez çalıştırıp ortalamaya bakın; önbelleğe alınmış ve alınmamış sayfaları ayrı ayrı ölçün.
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:
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.
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:
ekleyip sunucunun crontab'ına WP-CLI ile bir görev tanımlayın:
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.
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.
Ö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/
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
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"}'
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
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 );
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');
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.