CDN'ler sunucu yükünü azalttığı için, sunucu maliyetlerini düşürürler ve ani trafik artışlarının üstesinden gelmek için çok uygundurlar. Bu makale, CDN'lerin nasıl çalıştığını ve bir CDN kurulumunu seçme, yapılandırma ve optimize etme konusunda rehberlik amacı taşımaktadır.

Genel Bakış

Bir içerik dağıtım ağı (CDN), içeriği kullanıcılara hızlı bir şekilde sunmak için optimize edilmiş bir sunucular ağından oluşur. CDN'ler tartışmasız en iyi şekilde önbelleğe alınmış içerik sunmasıyla bilinse de, CDN'ler önbelleğe alınamayan içeriğin sunumunu da iyileştirebilir. Genel olarak konuşursak, siteniz ne kadar çok CDN tarafından teslim edilirse o kadar iyidir.

Yüksek düzeyde, CDN'lerin performans avantajları bir dizi ilkeden kaynaklanır: CDN sunucuları, kullanıcılara orijinal sunuculardan daha yakın konumlandırılır ve bu nedenle daha kısa bir gidiş dönüş süresi (RTT) gecikmesine sahiptir; ağ optimizasyonları CDN'lerin içeriği, içeriğin "doğrudan" kaynak sunucudan yüklenmesine kıyasla daha hızlı teslim etmesine olanak tanır; son olarak, CDN önbellekleri, kaynak sunucuya gitme isteğini ortadan kaldırır.

Kaynakları sunmak için bir CDN kullanmak (önbelleğe alınamayanlar bile), genellikle kullanıcının kaynağı "doğrudan" sunucularınızdan yüklemesinden daha hızlı olacaktır.

Kaynaktan kaynakları teslim etmek için bir CDN kullanıldığında, istemci ile yakındaki bir CDN sunucusu arasında yeni bir bağlantı kurulur. Yolculuğun geri kalanı (başka bir deyişle, CDN sunucusu ile kaynak arasındaki veri aktarımı) CDN'nin ağı üzerinden gerçekleşir - ki bu genellikle orijinle mevcut, kalıcı bağlantıları içerir. 

Bunun iki faydası vardır: yeni bağlantının kullanıcıya olabildiğince yakın bir şekilde sonlandırılması, gereksiz bağlantı kurulum maliyetlerini ortadan kaldırır (yeni bir bağlantı kurmak pahalıdır ve birden çok gidiş dönüş gerektirir); önceden ısıtılmış bir bağlantı kullanmak, verilerin mümkün olan en yüksek verimle anında aktarılmasına olanak tanır.

Bazı CDN'ler, trafiği İnternet'e yayılmış birden çok CDN sunucusu aracılığıyla kaynağa yönlendirerek bunu daha da geliştirir. CDN sunucuları arasındaki bağlantılar, Border Gateway Protocol (BGP) tarafından belirlenen yollar yerine güvenilir ve yüksek düzeyde optimize edilmiş yollar üzerinden gerçekleşir . BGP, internetin fiili yönlendirme protokolü olmasına rağmen, yönlendirme kararları her zaman performans odaklı değildir. Bu nedenle, BGP tarafından belirlenen yolların, CDN sunucuları arasındaki ince ayarlı yollardan daha az performans göstermesi muhtemeldir.

Önbelleğe Alma  - Caching

Bir CDN'nin sunucularındaki kaynakları önbelleğe almak, hizmet verilmek için kaynağa kadar tüm yolu gitme talebini ortadan kaldırır. Sonuç olarak, kaynak daha hızlı teslim edilir; bu aynı zamanda kaynak sunucudaki yükü de azaltır.

Önbelleğe kaynak ekleme

CDN önbelleklerini doldurmanın en yaygın olarak kullanılan yöntemi, CDN kaynakları gerektiği kadar "çekmektir" - bu, "kaynak çekme" olarak bilinir. Önbellekten belirli bir kaynak ilk kez talep edildiğinde, CDN bunu kaynak sunucudan isteyecek ve yanıtı önbelleğe alacaktır. Bu şekilde, önbelleğin içeriği, önbelleğe alınmamış ek kaynaklar talep edildikçe zamanla oluşturulur.

Önbellekten kaynakları kaldırma

CDN'ler, yararlı olmayan kaynakları düzenli aralıklarla önbellekten kaldırmak için önbellek çıkarmayı kullanır. Ek olarak, site sahipleri, kaynakları açık bir şekilde kaldırmak için temizlemeyi kullanabilir.

  • Önbellek Çıkarma

    Önbelleklerin sınırlı bir depolama kapasitesi vardır. Bir önbellek kapasitesine yaklaştığında, yakın zamanda erişilmemiş veya çok fazla yer kaplayan kaynakları kaldırarak yeni kaynaklara yer açar. Bu işlem, önbellek tahliyesi olarak bilinir. Bir önbellekten çıkarılmış bir kaynak, mutlaka bir CDN ağındaki tüm önbelleklerden çıkarıldığı anlamına gelmez.

  • Temizleme

    Temizleme ("önbellek geçersiz kılma" olarak da bilinir), bir kaynağı süresinin dolmasını veya çıkarılmasını beklemek zorunda kalmadan CDN'nin önbelleklerinden kaldırmaya yönelik bir mekanizmadır. Genellikle bir API aracılığıyla yürütülür. Temizleme, içeriğin geri çekilmesi gereken durumlarda (örneğin, yazım hatalarının düzeltilmesi, fiyatlandırma hataları veya yanlış haber makaleleri) kritiktir. Bunun da ötesinde, bir sitenin önbelleğe alma stratejisinde de çok önemli bir rol oynayabilir.

    Bir CDN neredeyse anında temizlemeyi destekliyorsa, temizleme, dinamik içeriğin önbelleğe alınmasını yönetmek için bir mekanizma olarak kullanılabilir: dinamik içeriği uzun bir TTL kullanarak önbelleğe alın, ardından her güncellendiğinde kaynağı temizleyin. Bu şekilde, kaynağın ne zaman değişeceğini önceden bilmemekle birlikte, dinamik bir kaynağın önbelleğe alma süresini maksimize etmek mümkündür. Bu teknik bazen "söylenene kadar bekletme" olarak adlandırılır.

    Temizleme geniş ölçekte kullanıldığında, genellikle "önbellek etiketleri" veya "vekil önbellek anahtarları" olarak bilinen bir kavramla bağlantılı olarak kullanılır. Bu mekanizma, site sahiplerinin bir veya daha fazla ek tanımlayıcıyı (bazen "etiketler" olarak adlandırılır) önbelleğe alınmış bir kaynakla ilişkilendirmesine olanak tanır. Bu etiketler daha sonra oldukça granüler temizleme gerçekleştirmek için kullanılabilir. Örneğin, (örneğin, tüm kaynaklara bir "altbilgi" etiketi eklemek olabilir /about/blogsitenizin altbilginizi içerdiğini). Altbilgi güncellendiğinde, CDN'nize "altbilgi" etiketiyle ilişkili tüm kaynakları temizlemesi talimatını verin.

Önbelleğe alınabilir kaynaklar

Bir kaynağın önbelleğe alınıp alınmayacağı ve nasıl önbelleğe alınacağı, kaynağın genel veya özel olmasına bağlıdır; statik veya dinamik.

Özel ve Açık kaynakları

  • Özel Kaynaklar

    Özel kaynaklar, tek bir kullanıcıya yönelik veriler içerir ve bu nedenle bir CDN tarafından önbelleğe alınmamalıdır. Özel kaynaklar Cache-Control: private başlık ile belirtilir .

  • Açık Kaynakları

    Genel kaynaklar kullanıcıya özel bilgi içermez ve bu nedenle bir CDN tarafından önbelleğe alınabilir. Bir Cache-Control: no-storeveya Cache-Control: private başlığı yoksa, bir kaynak bir CDN tarafından önbelleğe alınabilir olarak kabul edilebilir. Bir genel kaynağın önbelleğe alınabileceği sürenin uzunluğu, varlığın ne sıklıkta değiştiğine bağlıdır.

Dinamik ve statik içerik

  • Dinamik içerik

    Dinamik içerik, sık sık değişen içeriktir. Bir API yanıtı ve bir mağaza ana sayfası bu içerik türünün örnekleridir. Ancak, bu içeriğin sık sık değişmesi, mutlaka önbelleğe alınmasını engellemez. Yoğun trafik dönemlerinde, bu yanıtların çok kısa süreler için (örneğin, 5 saniye) önbelleğe alınması, veri tazeliği üzerinde minimum etkiye sahip olurken, kaynak sunucudaki yükü önemli ölçüde azaltabilir.

  • Statik içerik

    Statik içerik, hiç değilse seyrek olarak değişir. Resimler, videolar ve sürümlü kitaplıklar genellikle bu içerik türünün örnekleridir. Statik içerik değişmediğinden, uzun bir Yaşam Süresi (TTL) ile önbelleğe alınmalıdır - örneğin, 6 ay veya 1 yıl.

Bir CDN seçerken performans genellikle en önemli husustur. Ancak, bir CDN'nin sunduğu diğer özelliklerin (örneğin, güvenlik ve analiz özellikleri) yanı sıra bir CDN'nin fiyatlandırması, desteği ve ilk katılımı, bir CDN seçerken göz önünde bulundurulması gereken önemlidir.