Önbellek (cache)
Önbellek (cache), bir web sitesinde tekrar tekrar istenen verilerin kopyasının, her seferinde yeniden üretilmeden ya da uzak sunucudan getirilmeden daha hızlı sunulabilmesi için geçici olarak saklandığı katmandır. Tarayıcıda, sunucuda ve içerik dağıtım ağlarında farklı biçimlerde uygulanır; sunucunun her istekte yaptığı işi azaltarak yükleme süresini kısaltır ve sunucu kaynaklarını korur.
Önbellek katmanları
Bir web sitesinde önbellek, isteğin izlediği yol boyunca birkaç katmanda bulunabilir:
- Tarayıcı önbelleği: Kullanıcının tarayıcısı, daha önce indirdiği görselleri, stil ve betik dosyalarını cihazda saklar; aynı dosya sonraki sayfalarda ağdan yeniden istenmez.
- CDN önbelleği: İçerik dağıtım ağının uç sunucuları, dosyaların ve gerektiğinde sayfaların kopyalarını kullanıcıya yakın noktalarda tutar.
- Sayfa önbelleği (page cache): Sunucu, dinamik olarak üretilen bir sayfanın hazır HTML çıktısını saklar ve sonraki ziyaretçilere sayfayı yeniden üretmeden sunar. WordPress gibi içerik yönetim sistemlerinde her istekte çalışan PHP ve veritabanı işlemlerini devre dışı bıraktığı için ilk bayt süresi (TTFB) üzerinde belirgin etkisi vardır.
- Nesne önbelleği (object cache): Veritabanı sorgularının sonuçları Redis veya Memcached gibi bellek içi depolarda tutulur.
- İşlem kodu önbelleği (opcode cache): PHP’nin derlenmiş kodu OPcache ile bellekte saklanır; betikler her istekte yeniden derlenmez.
HTTP önbellek denetimi
Tarayıcı ve CDN önbelleklerinin davranışı, sunucunun yanıtla birlikte gönderdiği HTTP üst bilgileriyle belirlenir; bu kurallar RFC 9111 standardında tanımlanmıştır. Cache-Control üst bilgisindeki max-age yönergesi bir kopyanın kaç saniye taze sayılacağını, no-cache kopyanın her kullanımda sunucuyla doğrulanması gerektiğini, no-store ise hiç saklanmamasını belirtir. private yönergesi yanıtın yalnızca tarayıcı gibi kişiye ait önbelleklerde saklanmasına izin verir; CDN gibi birden çok kullanıcıya hizmet veren paylaşımlı önbellekler için ayrı süre s-maxage ile tanımlanır. ETag ve Last-Modified üst bilgileri, süresi dolan bir kopyanın değişip değişmediğinin sunucuya sorulmasını sağlar; içerik değişmemişse sunucu yalnızca 304 Not Modified yanıtı döndürür.
İçeriği hiç değişmeyen dosyalarda (dosya adında sürüm ya da içerik özeti bulunan stil, betik ve görsel dosyaları gibi) uzun süreli önbellek kuralları uygulanır; içerik değiştiğinde dosya adı da değiştiği için eski kopya kullanılmaz.
Önbellek tutarlılığı
Önbelleğe alınan bir sayfa güncellendiğinde eski kopyanın silinmesi gerekir; bu işleme önbellek temizleme (purge) denir. Önbellek eklentileri ve CDN’ler, bir içerik kaydedildiğinde ilgili sayfaları kendiliğinden temizleyen kurallar sunar. Oturum açmış kullanıcılara, sepet ve ödeme adımlarına ya da kişiye özel içeriğe sahip sayfalar, bir kullanıcının verisinin başka bir kullanıcıya gösterilmemesi için sayfa önbelleğinin dışında tutulur.
Ölçüm
Bir yanıtın önbellekten gelip gelmediği, sunucunun ve CDN’in eklediği üst bilgilerle izlenir; örneğin LiteSpeed sunucularda x-litespeed-cache, Cloudflare’de cf-cache-status alanı “hit” ya da “miss” değerini taşır. Chrome Geliştirici Araçları’ndaki Ağ paneli, tarayıcı önbelleğinden sunulan dosyaları ayrıca işaretler.

