Cache

Eş anlamlılar: Önbellek

Cache (önbellek), tekrar tekrar erişilen veriyi hızlı bellekte tutarak gelecekteki isteklerin daha hızlı yanıtlanmasını sağlar. Web'de tarayıcı cache, sunucu cache, CDN cache, uygulama cache, veritabanı cache olmak üzere birden fazla katmanda çalışır.

Cache Nedir?

Cache (önbellek), sık erişilen veriyi geçici olarak hızlı bellekte saklayan ve gelecekteki isteklerin kaynak yerine cache'ten yanıtlanmasını sağlayan sistemdir. Performansı dramatik artırır, kaynak sunucu yükünü azaltır ve kullanıcı deneyimini iyileştirir. Web ekosisteminde birden fazla cache katmanı vardır.

Web'de Cache Katmanları

  1. Browser Cache: Tarayıcıda yerel saklama (CSS, JS, resim)
  2. DNS Cache: Domain çözümleme sonuçları
  3. CDN Cache: Edge sunucularda statik içerik
  4. Reverse Proxy Cache: Varnish, NGINX cache
  5. Web Server Cache: LSCache, Apache mod_cache
  6. Application Cache: Redis, Memcached
  7. Database Cache: Query cache, buffer pool
  8. OPcache (PHP): Compile edilmiş bytecode

Cache Control HTTP Başlıkları

  • Cache-Control: max-age=3600 — 1 saat cache
  • Cache-Control: public — CDN ve proxy cache'leyebilir
  • Cache-Control: private — Sadece tarayıcı
  • Cache-Control: no-cache — Her istekte revalidate et
  • Cache-Control: no-store — Cache'leme
  • Cache-Control: immutable — Hash'li URL, hiç değişmeyecek
  • Cache-Control: stale-while-revalidate=60 — Stale sun, arkaplanda güncelle

Cache Stratejileri

Cache-Aside (Lazy Loading)

Uygulama cache'i kontrol eder, yoksa DB'den çeker ve cache'e yazar.

Write-Through

Yazma işlemi cache ve DB'ye aynı anda yapılır — tutarlılık garantili.

Write-Back (Write-Behind)

Yazma cache'e yapılır, sonra asenkron DB'ye. Hızlı ama veri kaybı riski.

Refresh-Ahead

Süresi dolmadan cache yenilenir — kullanıcı hiç MISS yaşamaz.

Cache Invalidation (Geçersizleştirme)

"Cache invalidation" yazılım mühendisliğinin en zor problemlerinden biridir:

  • TTL: Belirli süre sonra otomatik expire
  • Purge: Manuel silme
  • Versioning: URL değişimi (logo-v2.jpg)
  • Event-driven: Veri değiştiğinde tag-based purge

CDN Cache Tag'leri

Modern CDN'ler (Cloudflare, Fastly) tag bazlı invalidation destekler:

Cache-Tag: product-123, category-5

Bir ürün güncellendiğinde: PURGE /products ile sadece o tag'li içerik silinir.

WordPress Cache

  • LSCache: LiteSpeed kullanıcıları için ücretsiz
  • WP Rocket: Ücretli, en popüler
  • W3 Total Cache: Ücretsiz, kapsamlı
  • WP Super Cache: Automattic, basit

Cache HIT Oranı

Cache performansı HIT oranı ile ölçülür:

  • %90+: Mükemmel
  • %70-90: İyi
  • %50-70: Orta, iyileştirme gerek
  • %50 altı: Kötü, konfig gözden geçir

Cache Sorunları

  • Cache Stampede (Thundering Herd): TTL sona erdiğinde tüm istekler origin'e gider
  • Cache Miss Storm: Cache temizlendiğinde DB yükü patlar
  • Stale Data: Eski veri sunuluyor
  • Cookie-based Miss: Session cookie yanlış cache'i bypass eder

MeoHost ve Cache

MeoHost hosting paketleri katmanlı cache mimarisi sunar: Cloudflare edge → LSCache full page → Redis object cache → OPcache PHP bytecode. Bu yığın WordPress TTFB'sini 100ms altına çeker.

İlgili Terimler