İçeriğe geç
  • Hafta içi 08:00 – 18:00 · Destek 7/24
  1. Ana Sayfa
  2. Blog
  3. Performans

CDN ne zaman gerekir, ne zaman gereksizdir?

CDN her siteyi hızlandırmaz. Coğrafi dağılım, statik içerik oranı ve önbellek isabet oranına bakarak doğru kararı vermek.

CDN, içeriğin kopyalarını dünyanın farklı noktalarındaki sunucularda tutup ziyaretçiye en yakın olandan sunar. Kazanç, mesafenin kısalmasından gelir. Ziyaretçi zaten sunucunuza yakınsa kısaltılacak mesafe yoktur ve CDN, karmaşıklıktan başka bir şey eklemez.

Gecikme mesafeyle artar

Işık hızı bir üst sınır koyar. İstanbul'daki bir ziyaretçiden İstanbul'daki sunucuya gidiş dönüş tipik olarak 5–15 ms sürer; Frankfurt'a 35–50 ms, ABD doğu kıyısına 120–160 ms. Bir sayfa yüklenirken onlarca gidiş dönüş yapılır, dolayısıyla fark katlanarak büyür.

Bu tablo iki sonucu doğurur: hedef kitleniz Türkiye'deyse sunucunun Türkiye'de olması CDN'den daha etkilidir. Kitleniz birden fazla kıtaya yayılıysa CDN kaçınılmazdır.

Üç kavram: kaynak, kenar, isabet

Kaynak (origin) sitenizin gerçekten çalıştığı sunucudur. Kenar (edge) CDN'in dünyaya dağıttığı önbellek düğümleridir. İsabet (hit) ise bir isteğin kaynağa hiç gitmeden kenardan karşılanmasıdır. CDN'den beklenen kazancın tamamı üçüncü maddededir. İsabet yoksa CDN, araya giren fazladan bir duraktan ibarettir ve kimi durumda siteyi yavaşlatır: istek önce kenara, oradan kaynağa gider, cevap aynı yolu geri döner.

Bu yüzden "CDN açtık, hızlandı mı?" sorusunun cevabı ortalama yükleme süresinde değil, isabet oranında saklıdır. Aşağıdaki tablo, karar vermeden önce hangi kutuda olduğunuzu görmenizi sağlar.

Ziyaretçi dağılımıStatik içerik payıBeklenen kazançKarar
%90+ Türkiye%40 altıÖlçülemezGerekmez
%90+ Türkiye%70 üstüDüşükÖnce sunucu önbelleği
Yurt dışı %10–40%70 üstüOrtaYalnız statik için CDN
Çok kıtaya yayılıFark etmezYüksekCDN kurun
Fark etmezFark etmezSaldırı riski varsa CDN ayrıca güvenlik katmanıdır

CDN'in gerçekten işe yaradığı durumlar

  • Ziyaretçiler birden fazla ülkeye ya da kıtaya dağılmış.
  • Sayfa ağırlığının büyük bölümü statik: görsel, video, yazı tipi, betik.
  • Ani trafik tepe noktaları var; kaynak sunucuyu yükten korumak istiyorsunuz.
  • Saldırı riski yüksek; CDN aynı zamanda kaynak IP'yi gizler ve DDoS trafiğini emer.

İşe yaramadığı durumlar

  • Ziyaretçilerin tamamına yakını Türkiye'de ve sunucu da Türkiye'de.
  • Sayfaların çoğu kişiselleştirilmiş: panel, sepet, üyelik alanı. Bu sayfalar önbelleklenemez, her istek kaynağa gider.
  • Asıl darboğaz sunucu tarafında. TTFB 1,5 saniyeyse sorun mesafe değil, uygulamadır; önce veritabanı ve kod tarafına bakın.

Ölçmeden karar vermeyin

Analitik aracınızdan ziyaretçilerin ülke dağılımını çıkarın. Yurt dışı payı %10'un altındaysa CDN'in getirisi ölçülemeyecek kadar küçük olacaktır. Ayrıca sayfa ağırlığının kaçta kaçının statik dosyalardan geldiğini görün; statik pay %70'in üzerindeyse CDN'in etkisi belirgin olur.

Karar öncesi üç ölçüm

Tahmin yerine ölçün. Kurulumdan önce bu üç sayıyı bir kâğıda yazın; kurulumdan sonra aynı üçünü tekrar ölçün. Fark yoksa CDN'i kapatmakta tereddüt etmeyin.

  1. İlk bayta kadar geçen süre. curl -o /dev/null -s -w "%{time_starttransfer}\n" https://alanadiniz.com/ komutu HTML belgesinin ilk baytının kaç saniyede geldiğini söyler. 0,2 saniyenin altı iyi, 0,8 saniyenin üstü sunucu tarafında sorun var demektir.
  2. Statik pay. Tarayıcının ağ sekmesinde toplam aktarım boyutunu ve bunun içinde görsel, yazı tipi ve betiklerin payını okuyun.
  3. Coğrafi dağılım. Analitik aracında son 30 günün ülke kırılımı.

Yurt dışı payı %10'un altında ve ilk bayt süresi zaten düşükse CDN'e harcanacak emeği başka yere yatırın.

Kurulumda dikkat edilecekler

  1. Önbellek başlıkları. CDN, kaynak sunucunun gönderdiği Cache-Control başlığına uyar. Başlık yoksa ya da çok kısaysa CDN her istekte kaynağa döner ve kazanç kaybolur. Statik dosyalara uzun süre verin, dosya adında sürüm damgası kullanın.
  2. Dinamik yolları hariç tutun. Sepet, ödeme, hesap ve yönetici yollarını önbellek dışında bırakın. Bu kural yazılmadığında bir kullanıcının sepeti başkasına gösterilebilir.
  3. Çerez ve başlık farkları. Dil, para birimi veya cihaz tipine göre farklı içerik dönüyorsa CDN'e hangi başlığa göre ayrı kopya tutacağını söyleyin; aksi halde yanlış sürüm servis edilir.
  4. Gerçek ziyaretçi IP'si. CDN arkasında kaynak sunucu tüm istekleri CDN IP'sinden görür. X-Forwarded-For başlığını doğru yorumlayacak şekilde yapılandırmazsanız hız sınırı, coğrafi kısıt ve istatistikler bozulur.
  5. Boşaltma (purge) planı. İçerik güncellendiğinde önbelleğin nasıl temizleneceğini baştan belirleyin.

İsabet oranını ölçün

CDN panelinde cache hit ratio değerine bakın. Statik ağırlıklı bir sitede %90 üzerinde olmalıdır. %50'nin altındaysa bir şey yanlıştır: muhtemelen önbellek başlıkları eksiktir, çerezler her isteği benzersiz yapmaktadır ya da sorgu dizesi parametreleri gereksiz yere ayrı kopyalar üretmektedir.

Kaynak sunucuda doğru başlıklar

İsabet oranı düşükse ilk bakılacak yer kaynak sunucudur. Nginx tarafında sürüm damgalı statik dosyalar için tipik kural şudur:

location ~* \.(css|js|woff2|png|jpg|webp|avif)$ { add_header Cache-Control "public, max-age=31536000, immutable"; }

HTML belgelerine aynı süreyi vermeyin. Gövde sayfaları için public, max-age=0, s-maxage=300 gibi bir değer, tarayıcıyı her seferinde doğrulamaya zorlarken CDN'in beş dakika boyunca kendi kopyasını sunmasına izin verir. Yanlışlıkla oturum açmış kullanıcıya ait bir sayfanın önbelleğe düşmemesi için kimlik çerezi taşıyan isteklere Cache-Control: private döndürün.

Bir isteğin gerçekten kenardan mı geldiğini başlıklardan doğrulayın:

curl -sI https://alanadiniz.com/assets/app.js | grep -iE 'cache-control|age|x-cache'

Age değerinin sıfırdan büyük olması, cevabın önbellekten geldiğini gösterir. Her istekte sıfır görüyorsanız isabet yok demektir.

Ucuz alternatifler

CDN'e geçmeden önce şu üçünü tüketin; çoğu sitede toplam kazançları CDN'den fazladır:

  • Görselleri doğru boyutta ve WebP/AVIF biçiminde vermek.
  • Sunucu tarafında sayfa önbelleği açmak.
  • Yazı tiplerini kendi sunucunuzdan servis edip font-display: swap kullanmak.

Bunlar yapıldıktan sonra hâlâ yurt dışı ziyaretçilerde belirgin gecikme görüyorsanız CDN doğru adımdır. Aksi halde ölçemediğiniz bir kazanç için sisteminize yeni bir arıza noktası eklemiş olursunuz.

Bu yaklaşım ne zaman yanlış olur?

CDN'in zarar verdiği üç somut durum vardır:

  • Yanlış önbelleklenen kişisel sayfa. Oturum açmış kullanıcının panelinin önbelleğe düşmesi, o sayfanın başka ziyaretçilere servis edilmesi demektir. Bu bir performans sorunu değil, veri sızıntısıdır.
  • Yanlış yapılandırılmış SSL. CDN ile kaynak arasındaki bağlantıyı şifresiz bırakan "esnek" kipler, tarayıcıya kilit simgesi gösterirken trafiği internet üzerinde açık taşır.
  • Kaynak IP'nin sızması. CDN kurulup kaynak sunucunun güvenlik duvarı yalnız CDN ağına açılmazsa, saldırgan doğrudan sunucu IP'sine gider ve CDN'i baypas eder.

Bu üçü de yapılandırma hatasıdır, teknolojinin kusuru değil. Ancak listeyi kurulum gününde kontrol etmeyen ekiplerde üçü de sık görülür. Kaynak sunucunuz Türkiye'deyse ve kitleniz de buradaysa daha basit bir yol var: yakın lokasyon mesafeyi zaten sıfırlar, arada tutulacak ikinci bir kopya kalmaz.

  • #cdn
  • #önbellek
  • #hız
Bu yazıdaki adımları uygulayacak bir altyapı mı arıyorsunuz? Satış ekibimiz mevcut kurulumunuzu dinleyip uygun paketi önersin; kurulum ve taşıma bizde.
Devamı

İlgili yazılar

Performans

WordPress hızlandırma: önce ölçün, sonra dokunun

Eklenti yığmadan WordPress hızlandırmanın sırası: sunucu yanıtı, veritabanı, görseller, önbellek ve ön yüz. Her adımda ne ölçülür, hangi rakam iyidir?

  • 6 dk
Yazıyı oku
Performans

Sunucu izleme: neyi, hangi eşikle izlemeli?

İzlemenin amacı grafik biriktirmek değil, doğru anda uyandırmak. İzlenecek yedi metrik, gerçekçi eşikler ve alarm yorgunluğundan kaçınma.

  • 6 dk
Yazıyı oku