CDN nedir: CDN anlamı, kullanma nedenleri ve WordPress bağlantı yöntemleri

Test ortamı RHEL ailesiAlmaLinux 9.82026-10-16 tarihinde kontrol edildi

CDN (Content Delivery Network), kaynak sunucudaki dosyaları farklı bölgelerdeki uç sunuculara kaydeden ve ziyaretçiye en yakın sunucudan yanıt veren bir içerik dağıtım ağıdır. Uç sunucuların önbellekten yanıt verip vermediğini görmek için jsDelivr gibi herkese açık bir kütüphane dağıtım hizmetinin yanıt başlıklarını kontrol ettik; jQuery dosyası önbellekteki kopyadan sunuluyordu. WordPress'e bağlamanın iki yolu olan dosya adresini değiştirme ve DNS proxy yöntemlerini resmî belgelere göre karşılaştırdık.

1️⃣ CDN anlamı: uç sunucu ve kaynak sunucu

POP (Point of Presence), uç sunucuların bulunduğu veri merkezini ifade eder ve ziyaretçinin isteği en yakın POP'a iletilir.

İsteği alan uç sunucu, kayıtlı dosya varsa hemen yanıt verir; yoksa dosyayı kaynak sunucudan alıp yanıt verir ve uç sunucuya kaydeder. AWS'nin CDN'i olan CloudFront, kaynak sunucudan ilk bayt gelir gelmez ziyaretçiye iletmeye başlar (AWS resmî belgelerine göre).

CDN uç sunucuları ve kaynak sunucu

Uç sunucularda yalnızca ziyaretçilerin istediği dosyalar kaydedildiğinden, aynı dosya olsa bile her uç sunucudaki ilk istek kaynak sunucuya kadar gider.

Bu şekilde istek geldiğinde dosyayı alma yöntemine pull yöntemi denir; dosyaları CDN'e önceden yüklediğiniz push yöntemi de vardır.

2️⃣ CDN kullanma nedenleri: mesafe ve kaynak sunucu yükü

Ziyaretçi ile sunucu arasındaki mesafe arttıkça bir isteğin gidiş-dönüş süresi (RTT) uzar. Bir sayfa açıldığında HTML'in yanı sıra görsel, CSS ve JavaScript istekleri de oluştuğundan, yakındaki bir uç sunucu yanıt verirse her istekte gidiş-dönüş süresi kısalır.

Uç sunucunun yanıtladığı istekler kaynak sunucuya ulaşmadığı için kaynak sunucunun CPU kullanımı ve veri aktarımı (bant genişliği) da azalır. DNS'i Cloudflare proxy ile bağladığınızda kaynak sunucunun IP'si görünmez ve DDoS saldırıları da önce CDN'de engellenir (Cloudflare resmî belgelerine göre).

Ziyaretçileri kaynak sunucuyla aynı bölgede toplanan sitelerde mesafeden elde edilen fayda küçüktür. Bu tür sitelerde CDN'in daha büyük faydası, yanıt süresinin kısalmasından çok kaynak sunucu yükünün azalması ve veri aktarımından tasarruftur.

3️⃣ Önbelleğe alınan dosyalar: statik dosyalar ve HTML

Cloudflare varsayılan ayarda yalnızca dosya uzantısına göre belirlenen görsel, CSS ve JavaScript gibi statik dosyaları önbelleğe alır (Cloudflare resmî belgelerine göre). Sayfa HTML'i ve JSON varsayılan önbellek kapsamı dışında olduğundan, Cloudflare'i bağladıktan sonra da bunlara kaynak sunucu yanıt verir.

HTML'i de önbelleğe almak için CDN'de ayrıca bir önbellek kuralı oluşturmanız gerekir. Bu durumda oturum açmış kullanıcılar veya alışveriş sepeti gibi içeriği kişiye göre değişen sayfaları kuraldan hariç tutarak başka bir ziyaretçinin ekranının karışmasını önlersiniz.

4️⃣ WordPress bağlantısı: dosya adresini değiştirme ve DNS proxy

WordPress'e CDN bağlarken ya yalnızca statik dosyaların adreslerini CDN adresiyle değiştirirsiniz ya da alan adının DNS'ini CDN proxy'sine ayarlayarak tüm isteklerin CDN üzerinden geçmesini sağlarsınız.

YöntemBağlandığı yerCDN'den geçen isteklerKaynak sunucu IP'si
Dosya adresini değiştirmeÖnbellek eklentisinin CDN ayarlarına CDN adresini (CNAME) girmeGörsel, CSS ve JavaScript gibi statik dosyalarAçık kalır
DNS proxyAlan adının DNS kayıtlarını CDN proxy'sine bağlamaSitenin tüm HTTP ve HTTPS istekleriCDN'in arkasında gizlenir

Dosya adresini değiştirme yönteminde WP Rocket gibi bir önbellek eklentisinin CDN ayarlarına CDN sağlayıcısının verdiği adresi (CNAME) girersiniz. Girdiğinizde sayfa HTML'indeki görsel, CSS ve JavaScript adresleri CDN adresine dönüşür (WP Rocket resmî belgelerine göre). HTML'e ise kaynak sunucu yanıt vermeye devam eder.

WP Rocket ayar ekranı: Content Delivery sekmesindeki Other CDN görünümü, Your CDN anahtarı ve CDN CNAME(s) satırı
[Ayarlar › WP Rocket] içindeki [Content Delivery] sekmesinde [Other CDN] bölümünü açtığınızda CDN adresini gireceğiniz [CDN CNAME(s)] satırı görünür. CDN adresini girip üstteki [Your CDN] anahtarını açtığınızda dosya adresleri CDN adresine dönüşür; birden fazla adres varsa [+ Add CNAME] ile satır eklersiniz.

DNS proxy yöntemini kullandığınızda alan adının DNS'i CDN sağlayıcısı tarafından yönetilir. Cloudflare, ad sunucularını taşımadan yalnızca mevcut DNS sağlayıcınıza CNAME kaydı ekleyerek proxy bağlama yöntemi de sunar. Bu yöntem yalnızca Business ve üzeri planlarda kullanılabilir (Cloudflare resmî belgelerine göre).

5️⃣ Önbellek isabetini kontrol etme: cf-cache-status ve age başlıkları

CDN'in dosyayı önbellekten yanıtlayıp yanıtlamadığını yanıt başlıklarından kontrol edersiniz. Aşağıda jsDelivr'in dağıttığı jQuery dosyasının yanıt başlıklarını kontrol ettiğimiz komut ve sonucu yer alıyor.

curl -sI https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js | grep -iE "^(cache-control|cf-cache-status|age|server):"
cache-control: public, max-age=31536000, s-maxage=31536000, immutable
age: 45920
cf-cache-status: HIT
server: cloudflare

[server: cloudflare] bu yanıtı Cloudflare uç sunucusunun gönderdiğini gösterir; Cloudflare'in eklediği [cf-cache-status: HIT] ise önbellekten yanıt verildiği anlamına gelir. [age: 45920], bu dosyanın önbelleğe kaydedilmesinin üzerinden yaklaşık 12 saat 45 dakika geçtiğini gösterir. [max-age=31536000], dosyanın 1 yıl boyunca saklanabileceğine dair kaynak sunucunun talimatıdır.

[HIT] yerine [MISS], [DYNAMIC], [BYPASS] değerleri çıktığında isteğin nereye kadar gittiğini aşağıdaki diyagramda değer düğmelerine basarak görebilirsiniz.

🧩 cf-cache-status Değere göre isteğin gittiği yer
Açıklama diyagramı
📨 cf-cache-status
🧑‍💻 Ziyaretçi
Alınan yanıt başlığıcf-cache-status: HITcf-cache-status: MISScf-cache-status: DYNAMICcf-cache-status: BYPASS
Doğrudan önbellekten yanıtAlınan dosyayla yanıtKaynak yanıtı iletilirKaynak yanıtı iletilir→
🌐 Yakındaki uç sunucu (POP)
💾 ÖnbellekKayıtlı dosya varKayıtlı dosya yok, alınan dosya kaydedilirÖnbellek kapsamı dışı (HTML), kontrol yokÖnbelleğe alınabilir ama kaydedilmez
Ziyaretçiye yakın sunucu
Kaynak sunucuya kadar gitmezDosyayı alırÖnbellek kontrolü olmadan iletilirDosyayı alır→
🖥️ Kaynak sunucu
İstek yokDosyayla yanıt verirHTML yanıtıYanıt başlığı Cache-Control: no-store veya private
[cf-cache-status: HIT], uç sunucunun doğrudan önbellekten yanıt verdiği anlamına gelir ve bu istek kaynak sunucuya ulaşmaz.
Önbellekte olmadığı için kaynak sunucudan alınan dosya [MISS] olarak gösterilir ve uç sunucu yanıt verirken o dosyayı kaydeder.
Önbellek kapsamında olmadığı için önbellek kontrol edilmeden kaynak sunucuya iletilen HTML [DYNAMIC] olarak gösterilir.
Kaynak sunucunun yanıtında [Cache-Control: no-store] veya [private] talimatı varsa önbelleğe alınabilecek bir dosya bile [BYPASS] olarak gösterilir ve kaydedilmez.

🔢 SSS & önerilen içerikler

Web hosting, sitenin orijinal dosyalarının ve veritabanının bulunduğu sunucudur; CDN ise onun önünde dosya kopyalarıyla yanıt veren bir ağdır. CDN bağlasanız da kaynak sunucuya yine ihtiyacınız vardır.

Varnish yanıtları kaynak sunucunun önündeki tek bir yerde saklar; CDN ise aynı işi dünyanın birçok yerindeki uç sunucularda yapar. jQuery'nin resmî CDN'inin (code.jquery.com) yanıt başlıklarında [via: 1.1 varnish, 1.1 varnish] bulunur. Bu başlıktan code.jquery.com uç sunucusunun Varnish üzerinden yanıt verdiğini görebilirsiniz.

CDN yönetim panelindeki önbellek temizleme (Purge) işleviyle belirli adresleri veya tüm önbelleği silersiniz. Bazı WordPress önbellek eklentileri, yazıyı düzenlediğinizde bağlı CDN'in önbelleğini de birlikte temizleme özelliği sunar.

ℹ️ Satış ortaklığı bildirimi
Bu sitenin içeriklerinde satış ortaklığı bağlantıları bulunur. Bir ziyaretçi bu bağlantılar üzerinden ürün veya hizmet satın alırsa bu site satıcıdan komisyon alır. Bu süreçte alıcının ödediği tutar (kampanya indirimlerinde tutar düşer↓) artmaz. Yayımlanan fiyat, indirim ve stok bilgileri yazının yazıldığı zamana aittir ve gerçek durumdan farklı olabilir; bu yüzden satın almadan önce son bilgiyi satıcıdan kontrol etmenizi rica ederiz. Ürünler kendi ölçütlerimize göre seçilir ve değerlendirilir; komisyon alınıp alınmaması tanıtım sırasını veya değerlendirme içeriğini etkilemez.