Rehber 08 Ekim 2026 · 7 dakika okuma

Object cache (APCu, Redis) ne zaman gerekir? Net karar rehberi

APCu ve Redis object cache ne zaman kullanılmalı? WordPress/PHP uygulamalarında ölçülebilir eşiklerle performans planlayın.

Object cache; uygulamanın aynı isteği işlerken tekrar tekrar hesapladığı verileri bellekte tutarak gecikmeyi (latency) düşürür. PHP tarafında APCu, bir sunucunun RAM’inde çalışan, Redis ise ağ üzerinden paylaşılan (distributed) bir seçenek olarak öne çıkar. Bu yazıda “cache şart mı?” sorusunu netleştiriyoruz: Hangi durumda object cache gerçek fayda verir, hangisinde iş yükü başka yerde aranmalıdır.

Aşağıdaki rehber, WordPress ve genel PHP uygulamaları için somut bir karar çerçevesi sunar. Ölçüm yöntemleri, karar eşikleri ve yanlış kullanım senaryoları ile “gereksiz cache ekleme” hatalarını azaltmayı hedefler.

Object cache hangi sorunu çözer?

Object cache, özellikle dinamik uygulamalarda “hesaplama veya sorgu tekrarını” azaltır. Tek tek bileşen örnekleri: - WordPress’te seçenekler (options), transients, meta verileri veya tekrarlı sorgu sonuçlarının cachelenmesi - PHP içinde pahalı fonksiyonların çıktılarının istekler arası saklanması - Veritabanı (MySQL/MariaDB) veya harici servisler için tekrar eden çağrıların azaltılması

Buna karşılık: - Browser cache tarayıcı tarafında çalışır (cache başına başka bir katmandır). - Page cache sayfa çıktısını hazırlar. - Opcode cache (OPcache) PHP’nin derleme aşamasını hızlandırır. - Object cache ise uygulamanın ürettiği “veri nesnelerini” bellekte tutar.

Object cache’in asıl etkisi, aynı verinin bir istekte üretilip kısa sürede bir sonraki istekte tekrar üretilmesi döngüsünde görülür.

Object cache + hangi ön koşullar?

Object cache’i eklemeden önce şu temel kazanımların zaten oturduğunu varsaymak gerekir: - Veri tabanı ve web sunucusu üzerinde temel TTFB/yanıt gecikmesi nedenleri bulunmuş olmalı. - OPcache kurulu ve düzgün ayarlanmış olmalı. - Sistem RAM’i ve disk/CPU darboğazı yok olmalı.

Object cache, darboğazı tamamen “örtmez”. Örneğin RAM yetersizse Redis/APCu eklemek sonucu iyileştirmek yerine servisleri daha sık kesintiye götürebilir.

APCu ne zaman yeterli, Redis ne zaman gerekli?

Aşağıdaki tablo hızlı karar verir. “Kesin gerekli mi?” yerine “bu senaryoda en mantıklı seçim hangisi?” sorusuna odaklanır.

Senaryo Kullanım modeli En uygun seçim Neden
Tek VDS veya tek web node Aynı sunucuda PHP çalışır APCu İstekler arası aynı RAM alanında paylaşım sağlar, ekstra network maliyeti yoktur.
Yüksek trafik ama tek node WordPress/PHP tek makinede APCu (önce) Dağıtım karmaşıklığını artırmadan hızlı kazanç sağlar.
Birden fazla web node (load balancer) WordPress/PHP birden çok sunucu Redis Object cache paylaşımı gerekir; her node’un kendi APCu’su ayrı kalır.
Cache süreleri kısa, veri değişimi sık Transient/option gibi alanlar Redis veya APCu (daha seçici) Tutulan anahtarlar ve TTL yönetimi kritikleşir.
Redis altyapısı zaten mevcut Başka bileşen Redis kullanıyor Redis Tek sistem üzerinden genişletme maliyetleri düşer.
Çok büyük cache boyutu hedefi Yüzbinlerce anahtar Redis RAM sınırları node bazında hızla dolar.

Kritik fark: APCu “node-local”dir

APCu, aynı PHP FPM prosesinin/aynı sunucunun RAM’inde yaşar. Load balancer ile birden fazla node’da istekler dağılırsa, bir node’da cachelenen nesne diğer node’a gelmez. Bu yüzden cluster mimarilerinde Redis daha doğru olur.

Kritik fark: Redis “shared”dir

Redis, birden fazla web node’un aynı object cache havuzunu kullanmasına imkân verir. Bu, cache hit oranını artırır; fakat ağ gecikmesi, Redis bağlantı sayısı ve TTL/eviction (tahliye) yönetimi daha dikkat ister.

Hangi metrikler “object cache gerekli” sinyali verir?

Object cache kararını sezgiyle değil ölçümle vermek daha hızlı sonuç getirir. Aşağıdaki metrikler pratikte işe yarar:

1) Veritabanı tekrarlarının oranı

  • Aynı sayfa/endpoint için birden çok istek arasında DB sorgu sayısı belirgin şekilde yüksek kalıyorsa
  • EXPLAIN planlar benzer sorgularda tekrar tekrar ağır çalışıyorsa
  • “Query cache” yerine uygulama seviyesinde tekrar var gibi görünüyorsa

Bu durumda object cache, özellikle seçenekler/meta/transient gibi tekrar üretilen veriler için fark yaratır.

2) Uygulama içi hesaplama maliyeti

  • Profiling’de aynı fonksiyonların sık tekrarlandığı
  • PHP’nin pahalı hesaplar (ör. karmaşık filtreleme, çok adımlı dizi işlemleri) yaptığı

Object cache, “hesapla → sakla → bir sonraki istekte al” döngüsüyle gereksiz CPU kullanımını düşürür.

3) Cache hit oranı düşükse

Eğer halihazırda Redis/Memcached benzeri bir yapı yoksa “object cache yokluğu” performansı sınırlıyor olabilir. Öte yandan yanlış yapılandırma varsa (çok kısa TTL, çok büyük anahtar seti, eviction yüzünden sıklıkla düşen cache) yine object cache gerekliliği sanılabilir. Bu noktada önce mevcut cache mantığını doğrulayın.

4) “Peak saatlerinde” gecikme artışı

  • Trafik artınca TTFB uzuyor
  • PHP işlem süresi büyüyor

Bu, veritabanı veya hesaplama tekrarının görünür hale geldiğini anlatır. Object cache çoğu zaman bu dalgalanmayı düzeltir.

WordPress örneği: Hangi durumda object cache hızlı kazanç sağlar?

WordPress’te object cache genellikle “options/transients/meta” tarafındaki tekrarlara dokunur. Ancak her WordPress sitesi için aynı etki görülmez.

Aşağıdaki kontrol listesi “object cache fayda verir” olasılığını yükseltir: - Yönetim paneli sık kullanılmıyor ya da içerik güncellemesi saatlik/günlük aralıkta - Aynı sayfa grubu (ör. kategori sayfaları) yüksek trafik alıyor - Eklentiler çok sayıda option/get gibi çağrıları tetikliyor - Her istekte benzer meta verileri tekrar tekrar işleniyor

Hangi durumda object cache boşa gidebilir?

  • Sayfa çıktısı çok az dinamikse (zaten page cache çok iyi çalışıyorsa)
  • Trafik düşük ve DB sorguları zaten kabul edilebilir hızdaysa
  • Çok sık içerik güncelleniyor ve TTL/invalidasyon (geçersiz kılma) sürekli tetikleniyorsa
  • Cache anahtarları doğru kurgulanmadıysa veya “stale” veri yüzünden devre dışı kalıyorsa

APCu ile Redis’i karşılaştırırken maliyet ve riskler

Object cache eklemek yalnızca “performans kazanımı” değildir; işletim maliyeti ve risk getirir.

APCu’nun artıları ve eksileri

Artılar - Node-local olduğu için network gecikmesi yoktur. - Kurulum genellikle daha basittir; ayrı sunucu gerektirmez. - Tek node mimarilerinde hızlı ve ekonomiktir.

Eksiler - Çoklu node’da cache paylaşımı yoktur. - PHP-FPM process sayısı arttıkça efektif cache alanı/erişim deseni değişir. - RAM sınırına bağlı olarak büyütme tavanı hızlı dolar.

Redis’in artıları ve eksileri

Artılar - Çoklu node arasında object cache paylaşımı sağlar. - Daha büyük cache setlerini yönetmek daha kolaydır. - Merkezi invalidasyon/politika kurmak daha tutarlıdır.

Eksiler - Uygulama ile Redis arasında ağ maliyeti vardır. - Redis bağlantısı, timeout ayarları ve maxmemory/eviction davranışı kritikleşir. - Yanlış TTL veya aşırı anahtar üretimi Redis’te eviction yüzünden “kötüleşme” yaratabilir.

“Ne zaman başlamalıyım?” için net karar akışı

Aşağıdaki adımlar, gereksiz cache eklemeyi azaltan uygulanabilir bir sıradır.

Adım 1: Ölçüm yapın (15-30 dakika)

  • En yoğun 3 endpoint/URL’yi belirleyin.
  • Aynı saat diliminde ortalama TTFB ve toplam istek süresini izleyin.
  • Web sunucusu/PHP-FPM ve DB tarafındaki darboğaz sinyallerini görün.

Adım 2: Cache katmanlarını sırayla kontrol edin

  • OPcache var mı ve düzgün mü?
  • Page cache (varsa) çalışıyor mu?
  • Tarayıcı cache ve CDN doğru mu?

Object cache genellikle, bu katmanlar oturduktan sonra “dinamik veri maliyetini” düşürmek için anlamlı olur.

Adım 3: Mimariyi belirleyin (tek node mu, cluster mı?)

  • Tek VDS/VPS: APCu ile başlayın.
  • Load balancer arkasında birden fazla node: Redis’i hedefleyin.

Adım 4: Cache invalidation (geçersiz kılma) politikası net olsun

  • TTL değerlerini “çok kısa” tutmak hit oranını düşürür.
  • “Çok uzun” tutmak stale içerik veya yanlış seçenek verisi riskini artırır.
  • WordPress’te eklenti ayarlarınıza göre invalidation kurallarını kontrol edin.

Adım 5: Kademeli devreye alın

  • Önce küçük bir anahtar seti (veya eklentinin önerdiği varsayılan kapsam)
  • Ardından ölçüme göre genişletin

Bu yaklaşım, “cache yüzünden beklenmedik yan etkiler” riskini küçültür.

Uygulama seviyesinde doğru kullanıma dair pratik notlar

Object cache’in en sık başarısız olma nedeni “yanlış kapsam”tır.

  • Çok büyük nesneleri object cache’e koymak performansı artırmaz, bellek tüketimini artırır.
  • Her istekte üretilen benzersiz veri (ör. her kullanıcıya göre değişen devasa payload) object cache’e uygun değildir.
  • Çok sayıda küçük anahtar, eviction/tahliye olasılığını yükseltir.

TTL (time to live) hedefleri

  • Sık değişmeyen verilerde TTL’i artırmak hit oranını güçlendirir.
  • Sık değişen alanlarda TTL’i kısaltmak tutarlılığı korur.
  • En iyi ayar, uygulama davranışına göre ölçümle bulunur.

Sonuç: Kılavuz eşiklere göre hareket edin

Object cache, veritabanına veya pahalı hesaplamalara giden tekrarların yüksek olduğu senaryolarda net fayda sağlar. Tek node kurulumlarda APCu, çoklu node mimarilerde ise Redis daha doğru seçimdir. İster WordPress ister başka bir PHP uygulaması olsun, kararı TTFB/istek süresi ve DB/PHP tekrar sinyalleriyle verin; ardından kademeli ve kapsam kontrollü devreye alın.

Aksiyon önerisi: Önce en yoğun 3 endpoint için ölçüm alıp mevcut cache katmanlarını doğrulayın. Mimari tek node ise APCu ile, load balancer arkasında birden fazla node varsa Redis ile başlamayı hedefleyin. Böylece hem performans kazanımını net görür hem de gereksiz cache maliyetini önlemiş olursunuz.

Etiketler: #object cache #apcu #redis #vds #php #wordpress #performans

Hosting karşılaştırması yapmaya hazır mısın?

100+ firmanın fiyatlarını tek tıkla karşılaştır, en uygun paketi bul.

Hosting Karşılaştır →

İlgili Yazılar

0 ürün seçildi
NetKıyas AI
Hosting danışmanınız
Merhaba! Ben NetKıyas yapay zekâ asistanı. Hosting, VDS, VPS veya sunucu seçiminde size yardımcı olabilirim. Ne arıyorsunuz?