İnternet ve ağlar

CDN nedir

CDN, dünyanın çeşitli yerlerindeki, sitenizin dosyalarının kopyalarını tutan ve her ziyaretçinin en yakın noktadan hizmet almasını sağlayan bir sunucu ağıdır. Genelde söylenmeyen en önemli şey şu: bir CDN varsayılan olarak görselleri, yazı tiplerini ve durağan dosyaları tutar, sayfaların kendisini tutmaz; sayfalarınızın da uçta kalması, tanımladığınız ya da tanımlamadığınız ayrı bir kuraldır.

  • Ders 8 / 12
  • Başlangıç
  • Ücretsiz, kayıt yok

Tek köken sunucu, onlarca kopya ve en yakından hizmet alan ziyaretçi

Köken sunucu

tek yer ve taze içeriğin tek kaynağı

  • Site gerçekte burada yaşar
  • Her değişiklik önce burada olur
  • Sayfa istekleri genelde buraya kadar gelir
yalnızca uçta tutulanlar için

Ziyaretçiler

dünyanın herhangi bir yerinde, her biri kendi mesafesiyle

  • Ne kadar uzaksa yolculuk payı o kadar büyük
  • Görselleri ve yazı tiplerini yakından alırlar
  • Tarayıcılarının da ayrı bir önbelleği vardır

uç düğüm kopyayı tutuyorsa, köken sunucu birinin geldiğini hiç öğrenmez

Uç düğümler

yalnızca kopya tutan onlarca nokta

  • Asla taze içerik üretmezler
  • Sizin isteğinize göre değil, varsayılan kurallarına göre karar verirler
  • Bir kopyayı taze saydıkları sürece tutarlar

Bu çizim, uç düğümün tuttuğu bir şeyin yolunu gösterir. Sayfalar varsayılan olarak bunlardan değildir ve ancak açık bir kural varsa ortadan geçer.

Son kontrol: Bu dersteki bilgiler ve araç adları bu tarihte kaynaklarıyla yeniden doğrulanır.

CDN aslında ne yapar?

Siteniz tek bir sunucuda, belirli bir şehirde durur. Aynı şehirdeki bir ziyaretçi ile dünyanın öbür ucundaki bir ziyaretçi, ikisi de o tek makineye ulaşmak zorundadır ve ikincisinin mesafeye katlanmaktan başka seçeneği yoktur. Bir CDN bu mesafeyi basit bir hileyle kısaltır: dosyaların kopyalarını dünyanın onlarca yerinde tutar ve her isteği en yakınına gönderir.

İki terim gerekir, gerisi ayrıntıdır. Köken sunucu, sitenin gerçekten yaşadığı makinedir ve taze içeriğin çıktığı tek yerdir. Uç düğüm ise o onlarca noktadan biridir ve yalnızca kopya tutar. Bir uç düğümde bir şey varsa, kendisi yanıtlar ve köken sunucunun bundan haberi bile olmaz.

Asıl fayda tam da buradadır ve ikilidir. Ziyaretçi için yol kısalır. Sizin için sunucunun yükü düşer, çünkü uç düğümün yanıtladığı her dosya, makinenize hiç ulaşmamış bir istektir. Bu sitede bir yazı tipi dosyasını ölçtüğümüzde, uç düğüm kopyasını 96 saattir tutuyordu ve bu süre boyunca sunucumuzdan onu bir kez bile istememişti.

CDN nedir? Uçta ne önbelleklenir, ne önbelleklenmez

Uçta gerçekte ne kalır, ne kalmaz?

Çoğu site sahibinin varsayımının gerçekle uyuşmadığı yer burasıdır, ama beklediğiniz biçimde değil. Yaygın varsayım, bir siteyi CDN'e koymanın sayfaların en yakın noktadan sunulması demek olduğudur. Varsayılan hâlde bu cümle yanlıştır; doğru olduğu her yerde ise bunun nedeni birinin bunun için açık bir kural tanımlamış olmasıdır.

Varsayılan, içerik türüne göre değil dosya uzantısına göre karar verir. Bu sitenin arkasında durduğu sağlayıcı, varsayılan olarak tuttuğu uzantıların listesini kendi belgelerinde yayımlıyor: görseller, yazı tipleri, biçem dosyaları ve betikler listede, HTML sayfaları ise açıkça değil. Yani bir CDN arkasına yeni geçmiş bir sitenin dosyaları uçtadır, sayfaları değildir.

Bu sitede o kural eklendi ve sonucu ölçülebilir. Beş farklı adres aldık ve beşi de uçtan yanıt verdi; ön sayfa kopyasının yaşı ardışık iki istek arasında 126'dan 127 saniyeye çıktı, yani uç kendi sakladığı sürümü veriyor ve sunucumuza hiç gitmiyor. Aynı anda 96 saatlik bir kopyaya sahip bir yazı tipi dosyası ile 174 saatlik, yani yedi günden eski bir kopyaya sahip bir görsel de uçtan yanıt verdi.

Görülmeye değer bir parça daha: bu sitenin sayfaları iki farklı alıcıya iki farklı önbellek başlığı gönderiyor. Tarayıcıya her seferinde yeniden sor diyor, uca ise otuz gün tut diyor. Bunlar çelişkili değil; iki ayrı alıcıdır ve bir sayfanın hem uçta kalmasını hem de oturum açmış biri için taze kalmasını sağlayan şey budur.

Ve şimdi bir öğleden sonrayı yiyen ve neredeyse hiçbir yerde yazmayan tuzak: HEAD isteğiyle denetlerseniz yanlış yanıt alırsınız. Tam da bu ön sayfada bir HEAD isteği içeriğin dinamik sayıldığını söylüyor, aynı adrese aynı anda yapılan bir GET isteği ise uçtan geldiğini söylüyor. Nedeni, önbellek kuralının yalnızca GET isteklerini kapsaması. Sayfalarınızın önbelleklenmesi gerektiğinden eminken başlık aksini söylüyorsa, ayarlardan önce kendi isteğinizin biçiminden şüphelenin.

Uç düğümün her istek için verdiği karar

Bu, uç düğümün varsayılan olarak tuttuğu şeylerden mi?

Evet

Uçtan yanıtlanır

  • Görseller, yazı tipleri, hafif dosyalar: uzantıları varsayılan listede
  • Köken sunucu hiçbir iş yapmaz
  • Bu sitede kopyalar 96 ve 174 saatlikti
Hayır

Varsayılan olarak köken sunucuya gider

  • Sayfaların kendisi: varsayılan olarak önbelleklenmez
  • Açık bir kural olmadan her ziyaret makinenize tam bir istektir
  • Bu sitede o kural eklendi, bu yüzden sayfalar da uçtan gelir

Bu varsayılan karardır ve açık bir kural onu değiştirir. Varsayılan davranış sağlayıcıdan sağlayıcıya da değişir; bu yüzden tek yetke kendi sitenizin yanıt başlığıdır.

Yabancı bir siteye giren İranlı bir ziyaretçi için ne fark eder?

Mantık basit, etki ise asimetriktir. Ziyaretçi köken sunucudan ne kadar uzaksa, zamanın gidip gelmeye harcanan payı o kadar büyür; yakındaki bir kopyanın en çok kazandırdığı durum tam da budur. Sunucuyla aynı şehirdeki bir ziyaretçi içinse uç neredeyse hiçbir şey katmaz.

Ama hikâyenin yarısı önceki bölümdür. Sayfalar için bir kural tanımlanmamışsa, o uzaktaki ziyaretçi sayfanın kendisi için yine köken sunucuya kadar gider ve yalnızca görselleri ve yazı tiplerini yakından alır. Tanımlanmışsa sayfa da uçtan gelir ve faydanın büyük kısmı tam orada ortaya çıkar. Yani kazancınızın büyüklüğü, hizmeti satın almış olmanıza değil, bir yapılandırma kararına bağlıdır.

Şimdi bu dersin bilmediğini dürüstçe söyleyelim. İran içindeki bir ziyaretçinin hangi yolu izlediğini ya da ona hangi uç düğümün yanıt verdiğini ölçemeyiz, çünkü bu sunucu Avrupa'da ve buradan yapılan her ölçüm yalnızca kendi yolunu gösterir. Bir öğreticinin size "İran'dan CDN hızı" hakkında verdiği her sayı, İran içinden alınmadıysa uydurmadır. Tek geçerli sınama, sizin ya da kullanıcılarınızdan birinin gerçekte bulunduğunuz yerden ölçmesidir.

Yaptığınız değişiklik ziyaretçiye ne zaman ulaşır?

Bu, konunun tamamının en pratik kısmı ve yeni ekiplerin en çok zaman harcadığı yer. Kısa yanıt: uçta duran her şey, uç onu taze saydığı sürece değişmez. Sayfalarınız da önbellekleniyorsa buna sayfaların kendisi de dahildir; düzenleme sunucuda yapılmıştır ve ziyaretçi hâlâ önceki sürümü görmektedir.

Nedeni bu derste zaten verildi. Bu sitenin durağan dosyaları bir yıllık bir izinle önbelleklenir ve gördüğünüz gibi biri şu anda 174 saatlik bir kopya tutuyor. O dosyayı aynı adla değiştirirseniz, uç düğümün yeniden sorması için bir neden yoktur; ona göre kopyası hâlâ tazedir. Sayfalar da otuz günlük bir izinle uçta oturur. Ziyaretçinin tarayıcısının da kendi önbelleği vardır ve o tamamen sizin erişiminizin dışındadır.

Durağan dosyalar için profesyonel yanıt önbelleği temizlemek değil, adı değiştirmektir. Dosyanın adresi değişirse artık aynı dosya değildir ve herkes baştan başlar. Bu sitede eklenti dosyaları adreste bir sürüm numarası taşır ve o küçük kural, "değiştirdim ve hiçbir şey olmadı" ile "değiştirdim ve anında görüldü" arasındaki farktır. Bedelini kendimiz ödediğimiz için açıkça söyleyelim: bir eklentinin biçem dosyasında yapılan bir düzenleme, sürüm numarası yükseltilmeden, ziyaretçi için pratikte hiçbir şeyi değiştirmez. Sayfaların kendisi için bu numara mümkün değildir, çünkü bir sayfanın adresi Google'ın kayıtlarındaki şeydir ve onu değiştirmek başlı başına bir kayıptır; orada tek yol o birkaç adresi hedefli biçimde temizlemektir.

Önbellek temizliği konusunda da reklamların atladığı bir uyarı. Temizlemek bedava değildir. Önbellekten atılan her sayfanın yeniden kurulması gerekir ve tüm siteyi bir kerede temizlerseniz o kurulumların tamamı sunucunuza birlikte gelir. Birkaç site barındıran bir sunucuda, kötü zamanlanmış tek bir site geneli temizlik hepsini aynı anda yavaşlatabilir. Kuralımız şu: yalnızca gerçekten değişen adresleri temizleyin.

Bir değişikliğin ömrü, düzenlemeden ziyaretçinin gözüne

  1. 1

    Dosyayı sunucuda değiştirirsiniz

    Bu andan itibaren yeni sürüm köken sunucudadır. Onda olan tek yer orasıdır.

  2. 2

    Uç düğüm hâlâ eski sürümü tutar

    Yeniden sorması için bir nedeni de yoktur, çünkü ona göre kopyası tazedir.

  3. 3

    Ziyaretçinin tarayıcısı da eski sürümü tutar

    Bu sizin erişiminizin dışındadır ve sizin tarafınızdaki hiçbir temizlik onu boşaltmaz.

  4. 4

    Dosyanın adını değiştirin, biter

    Yeni adres yeni dosya demektir, herkes baştan başlar. Bu, önbelleği temizlemenin yerini alır ve riski sıfırdır. Sayfaların kendisi için bu yol açık değildir.

Bu sıra durağan bir dosya içindir. Uçta duran bir sayfada da aynısı olur; tek fark, bir sayfanın adresinin değiştirilememesi ve tek yolun o adresi hedefli biçimde temizlemek olmasıdır.

CDN sizin için ne zaman değmez?

Açık bir tutum alalım, çünkü bunu neredeyse hiçbir kaynak söylemiyor. Bütün ziyaretçileriniz tek bir ülkedeyse ve köken sunucu da aynı ülkedeyse, bir CDN onların hızına pek bir şey katmaz, hatta sayfanın yoluna bir durak daha ekleyebilir. Bu durumda parasını ve karmaşıklığını hız için değil, başka bir şey için ödüyorsunuz.

Bu onun işe yaramaz olduğu anlamına gelmez ve CDN'i yalnızca bir hız aracı sayanlar hikâyenin yarısını görmüştür. Mesafeden bağımsız üç fayda daha var: olağandışı trafiği sunucunuza ulaşmadan soğurmak, durağan dosyaları asıl makineye yük bindirmeden sunmak ve sertifikayı ve güvenli bağlantıyı uçta yönetmek. Birçok site için tek başına ikincisi bile değer.

Ve gözü açık kabul edilecek üç gerçek maliyet. Hata ayıklamaya bir katman daha eklenir ve bundan sonra bir şey bozulduğunda sunucu mu uç mu diye sormanız gerekir. Değişiklikler geç ulaşır: durağan dosya adı değişene kadar, sayfa ise o adres temizlenene kadar. Ve her sağlayıcının varsayılan davranışı diğerinden farklıdır ve zamanla değişir; bu yüzden güvenilir tek kaynak, altı ay önce bir yerde okuduğunuz şey değil, kendi yanıt başlığınızdır.

Sitenizin darboğazı mesafe değil sayfanın kurulmasıysa, doğru iş başka yerdedir ve site hızı izleğinde sürer.

Yapay zekayla hızlı yol

Bir CDN'in ne yaptığını öğrenmenin alışılmış yolu panelini açıp ayarlara bakmaktır. Hızlı yol bunun tersidir: ayarları yok sayın ve kendi sitenizden birkaç adresin gerçek başlıklarını alın, çünkü ayar neyin istendiğini, başlık ise ne olduğunu söyler. On dakika süren bu tek denetim, genelde site sahibinin başka türlü sandığı iki üç şeyi ortaya çıkarır.

  1. Kendi sitenizden gerçek bir örneklem oluşturan altı adres alın: ön sayfa, bir iç sayfa, bir blog yazısı, bir görsel, bir biçem dosyası ve bir yazı tipi.
  2. Her biri için başlıkları HEAD ile değil GET isteğiyle alın: curl -s --compressed -D - -o /dev/null https://example.com/path. Nedeni ikinci bölümde geçti ve bütün denetim buna bağlı. Her yanıtın üç satırı önemlidir, gerisi atılabilir: uç önbellek durumu, kopyanın yaşı ve kendi önbellek başlığınız.
  3. Altısını birden aşağıdaki tarifle verin, teker teker değil. Bu işin bütün değeri satırları karşılaştırmaktadır: sayfalar bir şey, dosyalar başka bir şey söylediğinde örüntü kendini gösterir. Hızlı ve ucuz bir model yeter; her sınıftaki güncel seçim yapay zekâ referansımızda tutulur.
  4. Yanıtı bir rapora değil, bir karara dönüştürün. Durağan dosyaların ömrü uzunsa ve adları sürümlenmemişse, bu hafta yapılacak en önemli şey budur.

Kopyalamaya hazır şablon

Rolün bir önbellek ve içerik dağıtım uzmanı. Yalnızca aşağıdaki tabloya göre karar ver. Belleğinden hiçbir sağlayıcının varsayılan davranışını ekleme.

Her adres için yanıt başlığından üç şey alındı: uç önbellek durumu, varsa kopyanın saniye cinsinden yaşı ve sitenin kendi gönderdiği önbellek başlığı.

1. Ön sayfa: {durum} | {yaş} | {önbellek başlığı}
2. Bir iç sayfa: {durum} | {yaş} | {önbellek başlığı}
3. Bir blog yazısı: {durum} | {yaş} | {önbellek başlığı}
4. Bir görsel: {durum} | {yaş} | {önbellek başlığı}
5. Bir biçem dosyası: {durum} | {yaş} | {önbellek başlığı}
6. Bir yazı tipi: {durum} | {yaş} | {önbellek başlığı}

Beş şey yaz:
1. Hangi satırlar gerçekten uçtan yanıtlandı, hangileri köken sunucuya gitti. Satırları grupla.
2. Sayfalar ile dosyalar farklı mı davranıyor? Öyleyse örüntüyü tek cümlede söyle.
3. Sitenin gönderdiği önbellek başlığı uçun yaptığıyla uyuşuyor mu? Uyuşmadığı her yeri adlandır.
4. Her satır için yaz: bu dosyayı şu anda aynı adla değiştirsem, ziyaretçi yeni sürümü ne zaman görür.
5. En büyük etkiye sahip tek bir iş, yalnızca bir tane.

Kurallar: uç önbellek durumunun ikiden çok olası değeri vardır; tanımadığın bir değeri birebir alıntıla ve ona anlam uydurma. Sayı uydurma ve tabloda olmayan hiçbir başlığı varsayma. Bir satırda yaş yoksa "bildirilmemiş" yaz ve ondan sonuç çıkarma. Önbelleğin tamamını temizlemeyi önerme.

Çıktıya güvenmeden önce: Yanıt aksini söylese bile kendinizin tutması gereken bir kural: önbelleğin tamamını temizlemek ilk değil son hamledir. Sorununuz bir dosyadaki değişikliğin görünmemesiyse, çare tüm sitenin önbelleğini boşaltmak değil adı sürümlemektir, çünkü bir dahaki sefere aynı şey yine olur. Siteniz birkaç siteyle bir sunucuyu paylaşıyorsa, yoğun bir saatte yapılan tek bir site geneli temizlik hepsini birlikte yavaşlatır. Denetim için yalnızca gerçekten değiştirdiğiniz birkaç adres yeter.

Bu işte yapay zeka

Bu konu, bir dil modelinin bambaşka iki davranış sergilediği ve farkı bilmeniz gereken konulardan biri. Önüne gerçek başlıkları koyun, mükemmeldir: birkaç satır boyunca örüntüyü bulur, sitenin istediğiyle uç düğümün yaptığı arasındaki çelişkiyi görür ve elle okunması yarım saat süren şeyi saniyeler içinde söyler. Önüne bir şey koymayıp yalnızca "şu hizmetin varsayılan davranışı nedir" diye sorun, bellekten yanıtlar ve belleğinin bir tarihi vardır.

Gerçekten işe yarayan araçlar

  • Claude Birkaç başlık kümesini birlikte verip örüntüyü istemek için iyidir; yukarıdaki hızlı yoldaki işin tam olarak kendisi. İran, Anthropic'in desteklenen ülkeler listesinde değil; resmî bir kayıt ya da ödeme yolu yok.
  • Gemini Notebook Bir hizmetin varsayılan davranışını sormanın doğru yolu budur: o hizmetin belge sayfasını yükleyin ve soruyu o belgenin içinde sorun. Yanıt sağlayıcının kendi metninden gelir ve o sayfanın güncelleme tarihi gözünüzün önündedir. Bir Google hesabıyla çalışır ve İran erişilebilir bölgeler arasında değil.

Nerede geri teper

İki belirgin risk ve ikisi de tam olarak bu konuda ortaya çıkar. Birincisi, modelin bir hizmetin varsayılan davranışını bellekten söylemesi. Burası kuralların sağlayıcılar arasında farklı olduğu, aynı sağlayıcının planları arasında bile farklı olduğu ve zamanla değiştiği bir alan; tam da bu dersin dayandığı belge sayfası kendi son güncelleme tarihini taşıyor, ki bir modelin belleğinin burada neden yetmediğini gösteren şey budur. Anthropic doğru olmayan bir şeyi kendinden emin söylemeye kendi belgelerinde halüsinasyon diyor. İkincisi ve daha pahalısı: model çare olarak önbelleğin tamamını temizlemeyi önerir, çünkü internette yazılmış en yaygın yanıt budur. Birkaç site barındıran bir sunucuda bu maliyetli bir işlemdir ve genelde dosya adlarının sürümlenmemesinden gelen bir sorunu da çözmez. Tutumumuz: modelin yalnızca sizin topladığınız başlıkları okumasına izin verilir ve varsayılan kural modelden değil, sağlayıcının kendi belge sayfasından okunur.

Kaynaklar: Cloudflare: default cache behavior Cloudflare: CDN-Cache-Control Anthropic: reduce hallucinations Anthropic: supported countries Google: where Gemini Apps are available

Bu tavsiyenin sınırı

Bu dersin ölçtüğü her şey, belirli bir sağlayıcının arkasındaki tek bir siteden geliyor. Varsayılan kurallar sağlayıcılar arasında farklıdır, tek bir sağlayıcının planları arasında farklıdır ve değişir; dolayısıyla burada aktarılan şey uzantı listesi değil, yöntemdir: gerçek yanıt başlığına bakmak. İkinci sınır daha önemli: bu sunucu Avrupa'da ve İran içindeki bir ziyaretçinin hangi yolu izlediğine, ona hangi uç düğümün yanıt verdiğine ya da onun için erişilebilir bir uç olup olmadığına karar veremeyiz. Bu derste İran içindeki bir ziyaretçinin deneyimiyle ilgili hiçbir sayı yok, çünkü elimizde yok. Ve son bir şey bilerek dışarıda bırakıldı: belirli bir hizmette önbellek kurallarını yapılandırmak; bu o hizmetin paneline bağlıdır ve tek doğru yetke onun belgeleridir.

Kendi işimizden

Bu dersin üzerine kurulduğu sayılar, 7 Eylül 2026'da tam da bu sitenin yanıt başlıklarından geliyor. Beş HTML adresini GET isteğiyle aldık: ön sayfa, bir hizmet sayfası, bir blog yazısı, ön sayfanın İngilizce sürümü ve bir sayfa daha; beşi de uçtan yanıt verdi ve ön sayfa kopyasının yaşı ardışık iki istek arasında 126'dan 127 saniyeye çıktı, yani uç kendi sakladığı sürümü veriyor. Aynı dakikada 96 saatlik bir kopyaya sahip bir yazı tipi dosyası ile 174 saatlik bir kopyaya sahip bir görsel de yanıt verdi; ikisi de bir yıllık önbellek izniyle sunuluyor. Ve bedelini bu oturumun kendisinin ödediği, bu sayfanın en iyi dersi olan şey: bu denetimi ilk kez HEAD isteğiyle çalıştırdık ve beş sayfa da önbelleklenmediklerini söyledi. GET ile aynı beş adres aynı anda uçtan geldiklerini söyledi. Bu bölgedeki önbellek kuralı yalnızca GET isteklerini kapsıyor; bu yüzden HEAD ile yapılan bir denetim ters yanıt verir ve hiçbir ayarlar paneli bunu size söylemez.

Gerçek devam soruları

CDN sitemi hızlandırır mı?

Bir kısmını ve hangi kısmını, bir yapılandırma kararına bağlı. Sayfalar için bir kural tanımlanmamışsa ilk bayta kadar geçen süre aşağı yukarı olduğu gibi kalır ve yalnızca görseller ile yazı tipleri daha erken ulaşır. Tanımlanmışsa sayfa da uçtan gelir ve fark orada belirginleşir. Ama sayfası yavaş kurulan bir site için CDN sorunu yerinden bile oynatmaz.

Sitemin biçemini değiştirdim ve hiçbir şey olmadı. Neden?

Çünkü dosyanın adresi değişmedi ve hem uç düğüm hem de ziyaretçinin tarayıcısı eski kopyayı hâlâ taze sayıyor. O dosya uzun bir izinle önbelleklendiyse bu durum günlerce sürebilir. Doğru yanıt önbelleği temizlemek değil; içerik değiştiğinde adres de değişsin diye dosya adresine bir sürüm numarası eklemektir.

Sayfamın uçtan mı yoksa kendi sunucumdan mı yanıtlandığını nasıl anlarım?

Ayarlar panelinden değil, yanıt başlıklarından ve bir GET isteğiyle. İki satıra bakın: uç önbellek durumu ve kopyanın yaşı; bir yaş bildirilmişse uç bir sürümü tutuyor ve süresini de söylüyordur. En önemli noktayı yineleyelim, çünkü ona kendimiz takıldık: bu sınamayı HEAD isteğiyle yapmayın. Bu sitede bir adres HEAD ile içeriğin dinamik sayıldığını söylüyor, aynı adres aynı anda GET ile uçtan geldiğini söylüyor.