WordPress sitenizi hızlandırmak deyince akla genelde sayfa önbelleği (page cache), CDN veya görsel optimizasyonu gelir. Ama dinamik sitelerde asıl darboğaz çoğu zaman görünmez bir yerdedir: veritabanı. Her sayfa yüklemesinde WordPress, MySQL'e onlarca hatta yüzlerce sorgu atar. İşte tam burada redis memcached object cache ikilisi devreye girer. Object cache, bu tekrarlayan sorguların sonuçlarını bellekte tutarak veritabanını rahatlatır ve yanıt süresini ciddi şekilde düşürür.
Bu yazıda object cache'in ne olduğunu, sayfa önbelleğinden farkını, Redis ile Memcached arasındaki gerçek ayrımları ve hangi durumda hangisini seçmeniz gerektiğini net biçimde anlatıyoruz.
Object Cache Tam Olarak Nedir?
WordPress çekirdeği, her istekte aynı verileri tekrar tekrar veritabanından çeker: ayarlar (wp_options), kullanıcı bilgileri, yazı meta verileri, taksonomi terimleri, menüler ve eklenti verileri. Bunların büyük kısmı sayfadan sayfaya değişmez. Object cache, bu sonuçları bellekte (RAM) anahtar-değer çiftleri olarak saklar ve bir sonraki istekte MySQL'e hiç gitmeden bellekten okur.
WordPress'in zaten dahili bir object cache mekanizması vardır ama varsayılan olarak bu önbellek sadece tek bir sayfa yüklemesi süresince geçerlidir (non-persistent). Yani istek bittiğinde önbellek silinir. Kalıcı (persistent) object cache ise Redis veya Memcached gibi harici bir bellek deposu kullanarak bu verileri istekler arasında saklar. Asıl performans kazancı buradan gelir.
Object Cache ile Page Cache Aynı Şey Değil
Bu iki kavram sık karıştırılır:
| Özellik | Page Cache (Sayfa Önbelleği) | Object Cache |
|---|---|---|
| Ne saklar | Tüm HTML çıktısı | Tekil veritabanı sorgu sonuçları |
| Nerede çalışır | İstek WordPress'e girmeden önce | WordPress çalışırken, veritabanı katmanında |
| Kim için ideal | Anonim ziyaretçiler, statik içerik | Giriş yapmış kullanıcılar, dinamik içerik |
| Tipik araç | WP Super Cache, sunucu seviyesi cache | Redis / Memcached |
Page cache, oturum açmış kullanıcılar veya sepet/hesap gibi dinamik sayfalarda devre dışı kalır. İşte object cache'in parladığı yer tam burasıdır: WooCommerce sepetleri, üyelik panelleri, yönetici ekranı (wp-admin) gibi page cache'in işe yaramadığı senaryolarda veritabanı yükünü hâlâ düşürür.
Redis ve Memcached: Temel Fark
Her ikisi de bellekte çalışan, hızlı anahtar-değer depolarıdır. Ama mimari ve yetenek açısından önemli farkları vardır.
Memcached
Memcached sadeliğe odaklanır. Tek bir işi çok iyi yapar: anahtar-değer çiftlerini RAM'de tutmak ve hızlıca geri vermek. Çok iş parçacıklı (multi-threaded) yapısı sayesinde çok çekirdekli sunucularda paralel istekleri verimli işler.
Dezavantajı: sadece basit string değerleri tutar, veri kalıcılığı yoktur (sunucu yeniden başlarsa tüm önbellek uçar) ve gelişmiş veri yapıları desteklemez. Bellek dolduğunda en eski verileri otomatik atar (LRU).
Redis
Redis ise bir "veri yapısı sunucusu" olarak tasarlanmıştır. String'in yanında liste, hash, set, sorted set gibi yapıları da destekler. Bu, WordPress object cache'inin grup bazlı önbellek temizliği (cache flush) gibi işlemleri çok daha verimli yapmasını sağlar.
Redis'in öne çıkan ek yetenekleri:
- Kalıcılık (persistence): İsteğe bağlı olarak veriyi diske yazabilir, yeniden başlatmada önbellek kaybolmaz.
- Atomik işlemler: Sayaç artırma gibi işlemleri güvenle yapar.
- Pub/Sub ve daha fazlası: Object cache dışında oturum yönetimi, kuyruk, rate limiting gibi işler için de kullanılabilir.
Tek bir ana iş parçacığında çalışır (yeni sürümlerde I/O için çoklu iş parçacığı vardır) ama pratikte WordPress yükleri için bu bir darboğaz oluşturmaz.
Karşılaştırma Özeti
| Kriter | Redis | Memcached |
|---|---|---|
| Veri yapıları | Zengin (hash, set, list...) | Sadece string |
| Kalıcılık | Var (opsiyonel) | Yok |
| Çoklu iş parçacığı | Kısmi (I/O) | Tam |
| Grup bazlı cache temizliği | Verimli | Sınırlı |
| WordPress eklenti desteği | Çok yaygın | Yaygın |
| Bellek verimliliği (büyük objelerde) | İyi | Çok iyi |
Hangisini Seçmelisiniz?
Çoğu WordPress sitesi için tavsiyemiz nettir: Redis.
Sebebi şu: WordPress'in object cache yapısı, verileri "gruplar" halinde organize eder (örneğin posts, options, users). Bir grubun önbelleğini topluca temizlemek gerektiğinde Redis'in veri yapıları bunu temiz şekilde yapar. Memcached'de aynı işlem için ek mantık veya tüm önbelleği uçurma gerekebilir. Ayrıca Redis'in eklenti ekosistemi (özellikle Redis Object Cache eklentisi) daha olgun ve aktif geliştiriliyor.
Memcached'i ne zaman tercih edersiniz?
- Çok büyük ölçekli, yatay genişleyen bir mimariniz varsa ve saf okuma hızı/çok çekirdek paralelliği kritikse.
- Zaten Memcached üzerine kurulu bir altyapınız varsa.
- Sadece basit, düz değerleri önbelleklemeniz yetiyorsa.
Ama küçük ve orta ölçekli işletme sitelerinin, blogların ve WooCommerce mağazalarının ezici çoğunluğunda Redis daha esnek ve geleceğe dönük bir seçimdir.
Object Cache WordPress'e Nasıl Kurulur?
Kurulum genel hatlarıyla iki aşamadan oluşur: sunucuda servisin hazır olması ve WordPress tarafında bağlantının yapılması.
1. Sunucu Tarafı
Redis veya Memcached servisinin sunucunuzda kurulu ve çalışıyor olması gerekir. Ayrıca PHP'nin ilgili eklentisinin (PHP için phpredis veya php-memcached) etkin olması şarttır. Paylaşımlı hosting kullanıyorsanız bu servislerin kontrol paneliniz üzerinden veya hosting sağlayıcınız tarafından sunulması gerekir. DirectAdmin ve Plesk gibi panellerde object cache servisleri yaygın olarak sunulur; emin değilseniz hosting sağlayıcınıza danışın.
Kendi sanal sunucunuzu (VDS) yönetiyorsanız servisi kendiniz kurar ve localhost üzerinden (genelde Redis için 6379, Memcached için 11211 portu) bağlanırsınız.
2. WordPress Tarafı
En pratik yol bir eklenti kullanmaktır:
- Redis için: "Redis Object Cache" eklentisi, kurulduktan sonra ayarlardan "Enable Object Cache" demeniz yeterli olur. Eklenti gerekli
object-cache.phpdosyasınıwp-contentdizinine yerleştirir. - Memcached için: Uygun bir drop-in (
object-cache.php) dosyasıwp-contentiçine eklenir.
Gelişmiş kullanıcılar wp-config.php içinde bağlantı bilgilerini elle tanımlayabilir:
define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_PORT', 6379 );
define( 'WP_CACHE', true );
Kurulumdan sonra eklenti panelinde bağlantının "Connected" göründüğünü ve sorgu sayısının düştüğünü doğrulayın.
Object Cache'in Gerçekten İşe Yarayıp Yaramadığını Ölçmek
Önbelleği kurmak yetmez, etkisini görmek gerekir. Doğrulama için pratik yöntemler:
- Sorgu sayısını izleyin: Query Monitor gibi bir eklentiyle sayfa başına düşen veritabanı sorgu sayısına bakın. Object cache aktifken bu sayı belirgin şekilde düşmelidir.
- TTFB ölçün: Sunucunun ilk byte'ı gönderme süresi (TTFB), object cache sayesinde özellikle yönetici paneli ve dinamik sayfalarda iyileşir.
- Cache hit oranı: Redis Object Cache eklentisi, isabet oranını (hit rate) gösterir. Sağlıklı bir kurulumda bu oran yüksek olmalıdır.
Önemli not: Object cache, yavaş kod veya optimize edilmemiş sorguların yerine geçmez. Eğer bir eklenti her sayfada ağır ve önbelleklenemeyen sorgular çalıştırıyorsa, object cache bunları kısmen rahatlatır ama kök sorunu çözmez. Veritabanı optimizasyonu ve PHP sürümü güncelliği de bu denklemde önemlidir.
Object Cache Kullanırken Dikkat Edilecekler
- Bellek (RAM) sınırı: Object cache RAM tüketir. Sınırlı belleğe sahip paketlerde, önbellek büyüdükçe diğer süreçleri zorlayabilir. Redis ve Memcached, bellek dolduğunda eski verileri atar (LRU) ama yine de kaynaklarınızı izleyin.
- Paylaşımlı ortamda izolasyon: Paylaşımlı hostingte object cache kullanıyorsanız, önbelleğin diğer hesaplardan izole olduğundan emin olun. İyi yapılandırılmış sunucularda her hesabın kendi namespace'i veya örneği olur.
- Önbellek temizliği: İçerik güncellemelerinde önbellek otomatik temizlenir ama tema/eklenti değişikliklerinde elle "flush cache" yapmak gerekebilir. Beklenmedik eski içerik görüyorsanız ilk denenecek şey budur.
- Geliştirme ortamı: Yeni özellik test ederken object cache yanıltıcı olabilir; geliştirme sürecinde geçici devre dışı bırakmak sorun teşhisini kolaylaştırır.
Özet
Object cache, WordPress'te genellikle gözden kaçan ama en yüksek getiriyi sağlayan optimizasyonlardan biridir. Veritabanı yükünü doğrudan azaltır ve özellikle sayfa önbelleğinin işe yaramadığı dinamik sayfalarda fark yaratır. redis memcached object cache tercihinde çoğu site için Redis, zengin veri yapıları ve olgun eklenti desteği nedeniyle daha esnek bir seçimdir; Memcached ise belirli yüksek ölçekli, saf hız odaklı senaryolarda hâlâ güçlü bir alternatiftir.
Asıl mesele şudur: object cache'i kurmak değil, doğru altyapıyla kurmak ve etkisini ölçerek doğrulamak. Yeterli RAM, güncel PHP ve düzgün yapılandırılmış bir sunucu olmadan en iyi önbellek bile potansiyelini gösteremez.
Sitenizin gerçekten hızlı olmasını istiyorsanız, işin temeli sağlam bir altyapıdır. Hostmana hosting paketleri modern PHP sürümleri ve performans odaklı yapılandırmayla gelir; object cache ihtiyaçlarınız için hosting planlarımıza göz atabilir, tam kontrol isterseniz yurt dışı sanal sunucu seçeneklerimizi inceleyebilirsiniz. Sitenizin hızını şimdi test etmek isterseniz ücretsiz web araçlarımız yardımcı olur; kurulum veya yapılandırmada takılırsanız uzaktan canlı destek ekibimiz yanınızda. Aklınıza takılan bir şey olursa bize ulaşmaktan çekinmeyin.
<!--silo-start-->📚 İlgili Rehberler
Ana rehber: WordPress Sitesi Nasıl Hızlandırılır? Önbellek, CDN ve Görsel Optimizasyonu
İlgili yazılar:
<!--silo-end-->