CDN ile cache aynı şey mi?
CDN, içeriği kullanıcılara coğrafi olarak daha yakın noktalardan sunabilen dağıtık bir ağ mimarisidir. Cache ise daha önce alınmış bir içeriğin tekrar kullanılmasını sağlayan mekanizmadır. CDNler cache kullanabilir ancak cache yalnızca CDNlerden ibaret değildir; tarayıcı, işletim sistemi, reverse proxy ve uygulama cacheleri de bulunabilir.
Cache-Control nedir?
Cache-Control HTTP başlığı, istemci ve ara cachelerin bir yanıtı nasıl saklayabileceği ve yeniden doğrulayabileceği konusunda yönergeler verir. public, private, max-age, s-maxage, no-cache ve no-store gibi direktiflerin anlamları farklıdır. Özellikle no-cache ile no-store aynı değildir: biri yeniden doğrulama gerektiren cache davranışını, diğeri saklamamayı ifade eder.
ETag ve Last-Modified ne işe yarar?
ETag, bir kaynağın belirli bir temsilini tanımlayan doğrulama değeridir. İstemci daha sonra If-None-Match ile bunu gönderdiğinde sunucu içerik değişmediyse 304 yanıtı dönebilir. Last-Modified/If-Modified-Since de benzer bir yeniden doğrulama mekanizmasıdır. Bu yöntemler gereksiz response body transferini azaltabilir.
Cache hit ve cache miss
Bir CDN veya proxy istenen kaynağı cacheinde bulup doğrudan döndürürse cache hit, origin sunucudan çekmek zorunda kalırsa cache miss oluşur. Hit oranı tek başına kalite metriği değildir; HTML, API, kullanıcıya özel içerik ve statik assetlerin cache stratejileri birbirinden farklı olabilir.
Cache Checker ile yanıt başlıklarını inceleyebilir, CDN Checker ile CDN kullanımına dair sinyalleri kontrol edebilirsiniz.
CSS ve JavaScript için uzun cache nasıl güvenli yapılır?
Dosya adlarına içerik hashı eklemek, örneğin app.8f3c.js gibi fingerprinting yaklaşımı, uzun süreli cache politikasını daha güvenli hale getirir. İçerik değiştiğinde yeni dosya adı oluşur ve kullanıcı eski dosyayı sonsuza kadar kullanmak zorunda kalmaz. Bu yaklaşım özellikle SPA ve modern build sistemlerinde yaygındır.
HTML neden daha dikkatli cachelenir?
HTML çoğu zaman en güncel içerik, kullanıcı oturumu veya yönlendirme bilgileriyle ilişkili olabilir. Yanlış cache politikası, bir kullanıcının içeriğinin başka kullanıcıya gösterilmesi gibi ciddi güvenlik problemlerine yol açabilir. Bu yüzden dinamik HTML ve kullanıcıya özel cevaplarda cache kapsamı dikkatle tasarlanmalıdır.
Cache temizleme neden bazen işe yaramıyor?
Bir içerik birden fazla katmanda cachelenmiş olabilir: browser, CDN edge, reverse proxy ve uygulama cachei. CDN purge işlemi origin cacheini temizlemez; browser hard refresh de CDN cacheini değiştirmez. Sorun giderirken hangi katmanın eski içeriği verdiğini response headerları ve zaman bilgileriyle belirlemek gerekir.
Sağlıklı cache stratejisi için kontrol listesi
- Statik assetlerde fingerprint/hash kullanın.
- HTML ve kullanıcıya özel içeriklerde cache kapsamını sınırlayın.
- Cache-Control direktiflerini amaca göre seçin.
- ETag veya Last-Modified ile yeniden doğrulamayı değerlendirin.
- CDN purge mekanizmasının kapsamını bilin.
- Yanıt headerlarında Age, ETag, Cache-Control ve varsa CDN özel headerlarını inceleyin.
- Güvenlik ve gizlilik açısından kişisel içeriklerin ortak cachelere girmediğinden emin olun.
Sonuç
İyi cache yönetimi yalnızca siteyi hızlandırmaz; origin sunucunun yükünü ve bant genişliği kullanımını da azaltabilir. Ancak cache yanlış yapılandırılırsa eski içerik, oturum izolasyonu ve yayınlama problemleri yaratabilir. Bu nedenle cache politikasını URL türüne göre tasarlamak en güvenli yaklaşımdır.
Cache-Control direktiflerini karıştırmayın
no-cache ile no-store aynı davranışı ifade etmez. no-cache, saklanan yanıtın kullanılmadan önce yeniden doğrulanmasını gerektirebilir; no-store ise yanıtın cachelenmemesini ister. Özellikle kişisel veya hassas içeriklerde bu ayrım önemlidir.
CDN kullanmak her zaman performansı artırır mı?
CDN edge cachelenebilir statik içerikte büyük fayda sağlayabilir; ancak cachelenemeyen dinamik isteklerde ağ katmanı yine origin sunucuya gidebilir. Yanlış cache politikaları, gereksiz purge işlemleri veya origin gecikmesi nedeniyle CDN kullanmak tek başına hızlı site garantisi değildir. Cachelenebilir içeriği ve cachelenemeyen içeriği ayırmak gerekir.
Cache sorunlarında hangi headerlara bakılmalı?
İlk incelemede Cache-Control, Age, ETag, Last-Modified ve CDN sağlayıcısının eklediği cache durum headerları değerlidir. Aynı URLyi farklı zamanlarda çağırıp header değişimini karşılaştırmak, eski içeriğin hangi katmandan geldiğini anlamaya yardımcı olabilir.
Stale içerik nasıl teşhis edilir?
Aynı URL farklı cihazlarda farklı içerik gösteriyorsa cache katmanlarından biri eski response döndürüyor olabilir. Response headerlarındaki Age veya CDN cache status bilgileri, içerik sürümü ve deployment zamanı ile karşılaştırılmalıdır. Gerekirse benzersiz bir cache-busting URL ile test yapılarak origin cevabı doğrulanabilir.
Cache invalidation için yayın planı
Özellikle statik assetlerde dosya adı fingerprinting, manuel purge ihtiyacını azaltır. HTML gibi merkezi giriş noktalarında ise deploy sonrası purge işleminin kapsamı önceden belirlenmelidir. “Her deployda her şeyi purge et” yaklaşımı çalışsa bile cache verimliliğini gereksiz yere düşürebilir.