CDN (İçerik Dağıtım Ağı) Nedir?
Kısa tanım
CDN (Content Delivery Network, İçerik Dağıtım Ağı), bir sitenin içeriğini dünyanın farklı noktalarındaki uç (edge) sunucularda önbelleğe alıp her kullanıcıya en yakın noktadan sunan dağıtık sunucu ağıdır. İstek önce CDN'e ulaşır; içerik uç önbellekte varsa kaynak sunucuya (origin) gidilmeden yanıtlanır. Böylece gecikme ve kaynak sunucu yükü azalır; çoğu CDN ayrıca TLS sonlandırma, sıkıştırma ve DDoS koruması da sağlar.
Diğer adları: Content Delivery Network, İçerik Dağıtım Ağı, edge cache, CDN önbelleği

Bir isteğin CDN üzerinden yolculuğu
Sitenin alan adı CDN'e yönlendirildiğinde (genellikle DNS kaydı veya ad sunucusu değişikliğiyle), kullanıcının isteği kaynak sunucuya değil, CDN'in kullanıcıya en yakın varlık noktasına (PoP, point of presence) gider. Oradaki uç sunucu iki durumla karşılaşır:
- Cache hit: İstenen yanıt uç önbellekte var ve hâlâ taze. Kaynak sunucuya hiç gidilmeden, birkaç milisaniyelik bir mesafeden yanıt verilir.
- Cache miss: Yanıt yok ya da süresi dolmuş. Uç sunucu kaynak sunucudan alır, kullanıcıya iletir ve kurallar izin veriyorsa bir sonraki istek için saklar.
Büyük CDN'ler, miss durumunda tüm uç noktaların kaynak sunucuya ayrı ayrı gitmesini önlemek için araya ikinci bir önbellek katmanı (tiered cache veya origin shield) koyar. Ölçülmesi gereken temel değer, isteklerin ne kadarının önbellekten karşılandığını gösteren cache hit oranıdır.
Edge cache'i ne yönetir?
CDN, bir yanıtı ne kadar saklayacağına öncelikle kaynak sunucunun gönderdiği Cache-Control başlığına bakarak karar verir. Tarayıcı ile paylaşılan önbellekler için farklı süreler tanımlamak mümkündür:
Cache-Control: public, max-age=60, s-maxage=600
CDN-Cache-Control: max-age=3600Burada tarayıcı yanıtı 60 saniye, genel paylaşılan önbellekler 600 saniye saklar. RFC 9213 ile tanımlanan CDN-Cache-Control başlığını destekleyen bir CDN ise bir saat saklar. Kısa tarayıcı süresi ile uzun edge süresinin birlikte kullanılması, içerik değiştiğinde CDN'den tek bir temizleme (purge) isteğiyle herkesin güncel sürüme geçmesini sağlar.
Önbellek anahtarı (cache key) da en az süre kadar önemlidir. Varsayılan anahtar genellikle URL ve sorgu parametreleridir; ?utm_source=… gibi pazarlama parametreleri anahtara dahil edilirse aynı sayfa yüzlerce ayrı kopya olarak saklanır ve hit oranı düşer. Vary başlığı da anahtarı genişletir; Vary: User-Agent gibi çok değişken bir başlık önbelleği fiilen işlevsiz bırakabilir.
Statik dosyalardan fazlası
CDN'ler başlangıçta görsel, CSS ve JavaScript dağıtmak için kullanılıyordu. Bugün çoğu sağlayıcı bunlara ek olarak:
- oturum açmamış ziyaretçilere gösterilen HTML sayfalarını da önbelleğe alabilir,
- görselleri anlık olarak yeniden boyutlandırıp modern formatlara dönüştürebilir,
- uç noktada kod çalıştırabilir; yönlendirme, A/B testi veya başlık ekleme gibi işler edge function ile kaynağa gitmeden yapılabilir,
- trafiği kaynak sunucunun önünde süzerek DDoS saldırılarını ve kötü niyetli botları emebilir.
Cloudflare gibi sağlayıcılar bu işlevlerin çoğunu tek bir ters vekil (reverse proxy) katmanında birleştirir.
Performansa etkisi: ne zaman fark yaratır?
Kaynak sunucusu Frankfurt'ta olan bir siteye İstanbul'dan, Tokyo'dan ve São Paulo'dan gelen istekler çok farklı ağ mesafeleri kat eder. Uç önbellekten yanıt verildiğinde bu mesafe ve dolayısıyla gecikme kısalır; bu da TTFB değerine doğrudan yansır. Önbelleğe alınamayan, her istekte veritabanından üretilen kişisel sayfalarda kazanç daha sınırlıdır: CDN yalnızca bağlantı kurulumunu hızlandırır, yanıt yine kaynak sunucuyu bekler.
Sık yapılan yapılandırma hataları
- Kişisel içeriği paylaşılan önbelleğe bırakmak: Sepet veya hesap sayfası yanlışlıkla önbelleğe alınırsa bir kullanıcının verisi diğerine gösterilebilir. Bu tür yanıtlar
privateveyano-storeile işaretlenmelidir. - Kaynak sunucuyu açık bırakmak: Origin'in IP adresi doğrudan erişilebilirse saldırgan CDN'i atlayabilir. Kaynak sunucu yalnızca CDN'in IP aralıklarından gelen trafiği kabul etmelidir.
- Yayından sonra temizlemeyi unutmak: Dosya adları sürümlenmemişse yeni yayın sonrası eski CSS uç önbellekte kalabilir.
- Hata yanıtlarını önbelleğe almak: Kısa bir arıza sırasında dönen 5xx yanıtları uzun süre saklanırsa sorun düzeldikten sonra da görünmeye devam eder.
Bir yanıtın önbellekten gelip gelmediği, Age başlığından ve sağlayıcıya özgü önbellek durumu başlıklarından anlaşılır. Tarayıcının kendi kopyasını nasıl yönettiği ise ayrı bir konudur ve tarayıcı önbelleği maddesinde anlatılıyor.

