CDN nedir: CDN anlamı, kullanma nedenleri ve WordPress bağlantı yöntemleri
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).

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öntem | Bağlandığı yer | CDN'den geçen istekler | Kaynak sunucu IP'si |
|---|---|---|---|
| Dosya adresini değiştirme | Önbellek eklentisinin CDN ayarlarına CDN adresini (CNAME) girme | Görsel, CSS ve JavaScript gibi statik dosyalar | Açık kalır |
| DNS proxy | Alan adının DNS kayıtlarını CDN proxy'sine bağlama | Sitenin tüm HTTP ve HTTPS istekleri | CDN'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.

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: HITcf-cache-status: MISScf-cache-status: DYNAMICcf-cache-status: BYPASSCache-Control: no-store veya private🔢 SSS & önerilen içerikler
Önbellek
Önbellek: tanımı ve önbelleğe almanın kullanıldığı tüm alanlar
Bir CDN'in uç sunucu önbelleği dahil, tarayıcıdan sunucunun içine kadar önbelleğin kullanıldığı alanları ayıran yazı.
Varnish
Apache ve Nginx'e Varnish Cache kurulumu ve ayarları
Ters proxy önbelleği Varnish'i Apache ve Nginx'in önüne kurup ayarlamayı anlatan yazı.
Cloudflare
Cloudflare CDN ayarı: Pro plan
Cloudflare'i DNS proxy yöntemiyle WordPress'e bağladıktan sonra ücretsiz plan ile Pro plan arasındaki hız farkını ve ayarları ele alan yazı.
ℹ️ 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.