Eğitimler

WordPress Nesne Önbelleği Redis ile; Adım Adım Kurulum

WordPress nesne önbelleğini Redis ile kurmanın pratik rehberi; ne önbelleğe alınır, ne kadar hız kazanırsınız ve paylaşımlı hostingde nasıl etkinleştirirsiniz.

Eğitimler

WordPress Nesne Önbelleği Nedir ve Siteniz Neden Buna İhtiyaç Duyar

WordPress siteniz her sayfayı görüntülemek için MySQL veritabanına onlarca sorgu gönderir. Her sorgu birkaç milisaniye sürer ve 50 eşzamanlı ziyaretçi geldiğinde veritabanı boğulur. Sonuç mu? 2 saniyenin üzerinde TTFB ve "Error establishing a database connection" hatası.

WordPress nesne önbelleği tam da burada devreye girer. WordPress'in her seferinde ayarları, seçenekleri ve tekrarlanan sorguları veritabanından okuması yerine, sonucu bellekte tutar. Bir dahaki sefere cevabı bellekten alır. Basit. Ama farkı çarpıcıdır.

20 aktif eklentili bir test sitesindeki testim: önbellek olmadan, her istek 420 milisaniyede yanıt veriyordu. Redis nesne önbelleği ile bu sayı 98 milisaniyeye düştü. 4 kattan fazla daha hızlı. Bu sayıyı nerede görürsünüz? GTmetrix veya ServerNet'in ücretsiz araçları gibi, sunucu yanıt süresini tarayıcı yükleme süresinden ayrı gösteren araçlarda.

Redis Tam Olarak Neyi Önbelleğe Alır

Birçok kişi nesne önbelleğinin tüm HTML sayfasını önbelleğe almak olduğunu sanır. Yanlış. Nesne önbelleği daha alt bir katmanda çalışır ve şunları depolar:

  • wp_options tablosundaki seçenekler — site, eklenti ve tema ayarlarının saklandığı yer
  • Sonucu kısa süre içinde değişmeyen tekrarlanan veritabanı sorguları
  • Session gibi PHP nesneleri ve eklentilerin geçici verileri
  • Her seferinde yeniden oluşturulan wp_nav_menu veya get_sidebar gibi ağır fonksiyonların çıktıları

Önemli not: Nesne önbelleği, sayfa önbelleğinden (Page Cache) farklıdır. W3 Total Cache veya WP Super Cache gibi sayfa önbelleği, nihai HTML çıktısını saklar. Nesne önbelleği onun altında çalışır ve WordPress'in sayfayı daha hızlı oluşturmasına yardımcı olur. Sayfa önbelleğiniz varsa, nesne önbelleğini de ekleyin. Bunlar birbirini tamamlar, alternatif değildir.

Redis mi Memcached mi?

İkisi de ücretsiz ve popüler seçenekler. Ama Redis kazanır. Neden? Çünkü verileri diske de kaydeder (kalıcılık) ve servis yeniden başlatılırsa önbellek kaybolmaz. Memcached her şeyi RAM'de tutar ve bir yeniden başlatmayla her şey silinir. Yüksek trafikli siteler için bu fark, her yeniden başlatmadan sonra veritabanında birkaç dakikalık ağır yük anlamına gelir.

Redis ayrıca daha zengin bir veri yapısına sahiptir: liste, set, hash. Redis Object Cache gibi WordPress önbellek eklentileri bu özellikleri kullanır. Benim tercihim Redis. Hostinginiz sadece Memcached sunuyorsa, o da hiç yoktan iyidir, ama seçeneğiniz varsa Redis'i alın.

Paylaşımlı Hostingde WordPress Nesne Önbelleğini Redis ile Kurulum

Paylaşımlı hostingde root erişiminiz yoktur ve Redis'i kuramazsınız. Bu yüzden hosting sağlayıcınızın sağladığı Redis'i kullanmalısınız. Önce hostinginizde Redis'in aktif olup olmadığını kontrol edin. Şu içerikle bir PHP dosyası oluşturun ve çalıştırın:

<?php
$redis = new Redis();
try {
    $redis->connect('127.0.0.1', 6379);
    echo 'Connected: ' . $redis->ping();
} catch (Exception $e) {
    echo 'Error: ' . $e->getMessage();
}
?>

Çıktıda "Connected: +PONG" görürseniz Redis aktiftir. "Connection refused" hatası alırsanız iki ihtimal var: Redis kurulu değil veya farklı bir port ve adreste. Paylaşımlı hostingde bazı şirketler Redis'i Unix soketi veya standart olmayan bir portta sunar. Hosting destekten tam adresi sorun.

İşte burada hata yapıyorlar: Birçok kişi Redis Object Cache eklentisini kurup etkinleştiriyor, ancak önbelleği eklenti ayarları sayfasından "etkinleştirmeyi" unutuyor. Eklenti kuruluyor ama önbellek çalışmıyor. Site yavaş kalıyor ve Redis'in işe yaramadığını düşünüyorlar. Eklentiyi kurduktan sonra mutlaka Settings → Redis sayfasına gidin ve Enable Object Cache düğmesine basın. Bu düğmeyi görmüyorsanız, eklenti Redis'e bağlanamamış demektir.

Adım Adım Kurulum ve Yapılandırma

  1. WordPress panelinizden Redis Object Cache eklentisini kurun ve etkinleştirin. Bu eklenti ücretsizdir ve 600 binden fazla aktif kuruluma sahiptir.
  2. Settings → Redis sayfasına gidin. Bağlantı kurulduysa "Connected" durumunu görürsünüz.
  3. Enable Object Cache düğmesine basın.
  4. Emin olmak için önbelleği test edin: siteyi bir kez açın, ardından eklenti ayarları sayfasını yenileyin. Hit Count sayacı artmalı.

Hostinginiz belirli eklentilerin kurulumuna izin vermiyorsa veya "Predis\Connection\ConnectionException" hatasıyla karşılaşırsanız, muhtemelen Redis için eklentinin bilmediği bir şifre tanımlanmıştır. wp-config.php dosyasına şu satırı ekleyin:

define('WP_REDIS_PASSWORD', 'your_redis_password');

Ve port standart değilse:

define('WP_REDIS_PORT', 6380);

Ne Kadar Fark Eder? Gerçek Rakamlar

Dürüst olalım. Nesne önbelleği mucize yaratmaz. Sitenizde zayıf kodlama veya ağır görseller sorunu varsa, nesne önbelleği sorunun sadece bir kısmını çözer. Ama standart WordPress siteleri için benim rakamlarım şunlar:

SenaryoNesne önbelleği olmadanRedis nesne önbelleği ile
Veritabanı sorgu sayısı40 ila 805 ila 15
TTFB (ilk bayta kadar geçen süre)400 ila 700 milisaniye80 ila 150 milisaniye
Sunucu CPU kullanımıYüksekDüşük

Bu rakamlar özel sunucuda değil, normal paylaşımlı hostingde elde edilmiştir. Önemli not: Nesne önbelleği sorgu sayısını azaltır, her sorgunun süresini değil. Veritabanınızın kendisi yavaşsa (örneğin eski HDD diskte), nesne önbelleği yardımcı olur ama sorunun kökünü çözmez.

Bir başka not: Sitenizin trafiği çok düşükse (örneğin günde 100 ziyaret), nesne önbelleği belirgin bir fark yaratmaz. Çünkü önbellek, tekrarlanan istekler çok olduğunda değerlidir. Az ziyaret edilen bir site için önce sayfa önbelleğini etkinleştirin, sonra nesne önbelleğine geçin.

Yaygın Sorunlar ve Çözümler

WordPress nesne önbelleği sorunsuz değildir. Gerçekten yaşandığını gördüklerim şunlar:

"Connection refused" Hatası

Eklenti Redis'e bağlanamıyor demektir. Önce hostinginizde Redis'in aktif olup olmadığını kontrol edin. Paylaşımlı hostingde bazı şirketler Redis'i yalnızca belirli planlar için etkinleştirir. Planınız Redis içermiyorsa, yükseltme yapmanız veya dosya tabanlı nesne önbelleği kullanmanız gerekir.

Önbellek Eski Kalıyor ve Değişiklikler Yansımıyor

Bu sorun, eklentiler veya temanız WordPress'in önbelleği temizlemesi gerektiğini bilmediği fonksiyonlar kullandığında ortaya çıkar. Örneğin, her seferinde sayıyı seçeneklere kaydeden bir ziyaret istatistiği eklentisi. Çözüm: Redis Object Cache ayarlarında "Flush Cache" seçeneğine basın veya temanızın functions.php dosyasında wp_cache_flush() fonksiyonunu kullanın.

Sayfa Önbelleği ile Çakışma

W3 Total Cache gibi bazı sayfa önbelleği eklentilerinin kendi dahili nesne önbelleği vardır. Hem sayfa önbelleği eklentisini Redis seçeneğiyle etkinleştirir hem de Redis Object Cache'i kurarsanız, üst üste iki önbellek katmanı oluşur ve bellek israf edilir. Seçim yapın: ya W3 Total Cache'in dahili nesne önbelleğini kullanın ya da ayrı Redis Object Cache'i. İkisi birden değil.

Paylaşımlı Hostingde Nesne Önbelleği; Sınırlamalar

Paylaşımlı hostingde Redis genellikle birden fazla kullanıcı arasında paylaşılır. Yani Redis belleği sınırlıdır ve siteniz bundan yalnızca 32 veya 64 megabayt alabilir. Siteniz büyükse ve önbellek sürekli doluyorsa, Hit oranı düşebilir ve önbellek etkisiz hale gelebilir.

Nasıl anlarsınız? Redis Object Cache ayarları sayfasında istatistiklere bakın. Hit Rate %70'in altındaysa, önbelleğiniz küçük veya veriler çok erken kayboluyor demektir. Bu durumda, yalnızca önemli seçeneklerin önbelleğe alınmasını etkinleştirebilir veya özel kaynaklı Linux hostinge geçebilirsiniz. Bu kararı hislerinize göre değil, rakamlara göre verin.

Bir başka sınırlama: Bazı paylaşımlı hostingler Redis'i sitenizin bulunduğu sunucuda çalıştırır. Aynı sunucudaki başka bir kullanıcı Redis'i ağır sorgularla zorlarsa, sizin siteniz de yavaşlar. Bu paylaşımlı hostingin riskidir ve daha özel bir ortama geçmek dışında kesin bir çözümü yoktur.

Nesne Önbelleğini Ne Zaman Devre Dışı Bırakmalı

Evet, nesne önbelleğinin sorun çıkardığı durumlar vardır. Siteniz anlık stok takibi yapan WooCommerce kullanıyorsa ve müşteriler bazen yanlış stok sayısı görüyorsa, muhtemelen nesne önbelleği ürün verilerini vaktinden önce güncellenmemiş olarak tutuyordur. WooCommerce genellikle önbelleği yönetir, ancak üçüncü taraf eklentiler doğru çalışmayabilir.

Böyle bir hata görürseniz, önce önbelleği temizleyin. Sorun tekrarlarsa, o belirli sayfa için önbelleği devre dışı bırakın. Redis Object Cache'de wp_cache_set fonksiyonunu expire=0 parametresiyle kullanarak belirli veriler için önbelleği devre dışı bırakabilirsiniz. Ancak tüm sitede sorun varsa, nesne önbelleğini kapatın ve sorunun kökünü eklentide bulun.

Benim tercihim mi? WordPress sitelerinin %90'ı için Redis ile nesne önbelleğini etkinleştiririm. Anlık işlemleri olan yoğun e-ticaret siteleri için önce test ederim ve bir çakışma görürsem belirli sayfalar için devre dışı bırakırım. Bu bir araçtır, sihir değil. Davranışını tanımalısınız.

Sık Sorulan Sorular

WordPress nesne önbelleği ile sayfa önbelleği arasındaki fark nedir?

Sayfa önbelleği nihai HTML çıktısını saklar ve doğrudan tarayıcıya gönderir. Nesne önbelleği, seçenekler ve sorgular gibi ara verileri bellekte tutar, böylece WordPress sayfayı daha hızlı oluşturur. Bunlar birbirini tamamlar ve ikisi de aynı anda etkinleştirilebilir.

Redis nesne önbelleği tüm paylaşımlı hostinglerde çalışır mı?

Hayır. Redis'in sunucuda kurulu ve aktif olması gerekir. Bazı hostingler yalnızca Memcached sunar, bazıları hiçbirini sunmaz. Eklentiyi kurmadan önce hosting desteğiyle iletişime geçin veya bu makaledeki PHP test scriptiyle kontrol edin.

Nesne önbelleği site hızını ne kadar artırır?

Testlerimde TTFB yaklaşık 500 milisaniyeden 100 milisaniyeye düştü, yani yaklaşık 4 kat daha hızlı. Ancak bu sayı eklenti sayısına, kod kalitesine ve veritabanı boyutuna bağlıdır. Hafif siteler daha az fark görür.

Nesne önbelleğini etkinleştirdikten sonra site değişiklikleri görünmüyor. Önbelleği nasıl temizlerim?

WordPress panelinizdeki Settings → Redis sayfasından Flush Cache düğmesine basın. Panele erişiminiz yoksa, phpMyAdmin'den wp_cache_flush fonksiyonunu çalıştırın veya wp-content klasöründen object-cache.php dosyasını silerek önbelleği devre dışı bırakın.

ServerNet Destek

ServerNet mühendislik ve yayın ekibi — altyapı, ağ ve web barındırma uzmanları.

WordPress Hosting
Paylaş:

Yorumlar 0

Henüz yorum yok — ilk siz olun!

Yorum bırakın

İlgili hizmet

WordPress Hosting

LiteSpeed Enterprise ve NVMe üzerinde WordPress'e özel altyapı — otomatik kurulum, güvenli güncelleme, staging ve sizi Google'da üstte tutan önbellek.