Varnish Cache, HTTP trafiğini backend’e ulaşmadan karşılayabilen yüksek performanslı bir reverse proxy ve cache katmanıdır. Özellikle aynı içeriğin çok sayıda kullanıcıya sunulduğu e-ticaret, haber ve dokümantasyon platformlarında backend kapasitesini korumaya yardımcı olur.
Mono’da kullanım alanları
- E-ticaret / haber sitelerinde edge caching
- API yanıt önbellekleme
- Kompleks önbellek invalidasyon stratejileri
Cache tasarımında kritik noktalar
Cache hit oranı tek başına başarı ölçütü değildir; doğru içeriğin doğru kullanıcıya sunulması gerekir. Cache-Control, cookie ve Authorization davranışı, TTL, stale içerik, purge mekanizması ve deploy sonrası invalidation birlikte test edilmelidir. Mono, cache katmanını metrik ve trace bilgisiyle görünür hâle getirir.
Hangi içerik önbelleğe alınmalı?
Ürün kataloğu veya herkese açık haber sayfası, aynı yanıtın birçok kullanıcıya gönderildiği iyi örneklerdir. Sepet, hesap bilgisi ve kullanıcıya özel fiyat ise farklı ele alınmalıdır. Bütün cookie’leri silerek cache hit oranını yükseltmek, oturum davranışını bozabilir ve kişiselleştirilmiş yanıtların paylaşılmasına yol açabilir. Önce yanıtların hangilerinin gerçekten ortak olduğu tanımlanır.
Cache anahtarında alan adı, yol ve gerekli sorgu parametreleri doğru temsil edilmelidir. Takip parametrelerinin gereksiz çeşitlilik oluşturması ile uygulamanın anlamlı filtrelerinin birbirine karışması farklı sorunlardır. Vary başlığı ve dil, sıkıştırma gibi yanıt varyasyonları da incelenir. Amaç en yüksek hit oranını değil, doğru yanıtı düşük maliyetle sunmayı sağlamaktır.
Varnish, Nginx cache ve CDN karşılaştırması
| İhtiyaç | Değerlendirme |
|---|---|
| Mevcut proxy üzerinde temel cache | Nginx cache, yeni bir katman eklemeden yeterli olabilir. |
| Ayrıntılı HTTP cache davranışı | Varnish ve VCL, uygulamaya özel kararları yönetmek için değerlendirilir. |
| Kullanıcıya coğrafi yakınlık | CDN ayrı bir dağıtım ve ağ erişimi katmanı sağlar. |
| CDN arkasında origin kapasitesini korumak | Varnish ile CDN birlikte kullanılabilir; invalidation zinciri eşleştirilir. |
Varnish Cache mimarisinde istemci TLS sonlandırması genellikle ayrı bir katmanda tasarlanır. Bu katmandan gelen host ve protokol bilgisinin güvenli biçimde aktarılması gerekir. Ticari ürünlerin özelliklerini açık kaynak dağıtımın varsayılan yetenekleriyle karıştırmamak önemlidir.
Purge, ban ve grace neden önemlidir?
Bir fiyat değişikliği uygulamaya yazıldığı hâlde eski sayfa cache’te kalabilir. Bu nedenle içerik yayınlama süreci invalidation ile ilişkilendirilmelidir. Tam anahtarla nesne silme, koşula göre geçersiz kılma ve TTL sonunda yenileme farklı maliyetlere sahiptir. Purge arayüzü herkese açık bırakılmaz; yetkilendirme ve kaynak kısıtlaması gerekir.
Grace, backend geçici olarak yavaşladığında veya yenileme sürerken eski içeriği belirli koşullarda sunmaya yardımcı olabilir. Ancak her veri türü için uygun değildir. Haber sayfası ile stok ya da fiyat bilgisinin kabul edilebilir eskime süresi aynı değildir. Bu tolerans teknik ekip tarafından tahmin edilmek yerine iş sahibiyle belirlenmelidir.
Mono’nun performans değerlendirmesi
Hit/miss oranı; backend istek sayısı, yanıt boyutları, bellek kullanımı ve tahliye davranışıyla birlikte ölçülür. Cache ısınma süresi ve yayın sonrası toplu geçersiz kılmanın origin üzerinde oluşturduğu yük test edilir. Kullanıcıya özel yanıtların paylaşılmadığı doğrulanmadan performans kazanımı başarı kabul edilmez. Böylece iyileştirme yalnızca hız değil, içerik doğruluğu ve sürdürülebilir kapasite sağlar.

