CDN ve Kenar Önbellek — Kampanya Sayfası Hızlansın, Hesap Sayfası Karışmasın
Önce şunu oku: Tarayıcı Önbelleği — Yeni Sürümü Yayına Aldın, Müşteri Neden Hâlâ Eskisini Görüyor?
30 saniyede özet
CDN, sayfaların kopyasını kullanıcılara yakın kenar sunucularda tutar. Herkese açık sayfalar orada hızlanır; kişisel bir sayfa oraya girerse müşteri başkasının hesabını görür. Kişisel olanı önbelleğe alma, yayında eskiyi temizle.
Gazeteyi matbaadan değil, mahalledeki bayiden alırsın; bayi her sabah birkaç kopya tutar. Ama sana gelen kişisel bir mektup bayide bekletilmez. Bekletilirse, onu ilk soran kişi alır.
-
Bayt: Siteyi CDN arkasına aldık ve her şeyi bir saat önbelleğe koyduk. Sayfalar uçuyor!
-
Sen: Bora 'Hesabım'ı açmış ve Ayşe'nin bakiyesini görmüş.
-
Bayt: Ama /hesabim sayfası her kullanıcıya kendi bilgisini gösteriyor!
-
Bayt: Gösteriyor. Ama kenar sunucu bunu bilmiyor; ona göre /hesabim tek bir sayfa.
Kenar sunucu ne yapar?
Bir CDNİçerik dağıtım ağı: cevapların kopyasını kullanıcılara yakın kenar sunucularda tutar. Herkese açık sayfalar ana sunucuya gitmeden gelir.Sözlükte gör →, cevapların kopyasını kullanıcılara yakın kenar sunucularda tutar. Aynı sayfayı isteyen ikinci kullanıcı, ana sunucuya gitmeden cevap alır.
Neyin ne kadar süre tutulacağını ana sunucunun gönderdiği Cache-ControlSunucunun bir cevapla gönderdiği başlık: tarayıcının bu cevabı saklayıp saklamayacağını ve ne kadar süre sormadan kullanacağını söyler.Sözlükte gör → başlığı söyler. public, max-age=3600, “bunu bir saat boyunca herkese verebilirsin” demektir.
Kafam karıştı, daha basit anlat
CDN, sayfaların kopyasını kullanıcıya yakın tutar. Ne kadar süre tutacağını Cache-Control başlığı söyler.
CDN ne yapar?
Cache-Control: public, max-age=3600 kenar sunucuya ne söyler?
Kişisel olan kenara girmez
Her cevap 'public, max-age=3600' ile gönderiliyor. Ayşe /hesabim sayfasını açtı. Bir dakika sonra Bora aynı kenar sunucudan /hesabim istedi. Bora ne görür? Cevabı göster
Ayşe’nin hesap sayfasını. Kenar sunucu için /hesabim tek bir adres, tek bir kopya. Ayşe’nin cevabı public olarak saklandı ve sonraki herkese verildi.
Adım adım oku
- Matbaa uzakta, bayi mahallede.
- Bayi Ayşe'nin mektubunu Bora'ya verdi.
- Yeni baskı çıktı, bayide eskisi duruyor.
- Gazete bayide, mektup elden, eski baskı toplanır.
Kişiye özel cevaplar private, no-store ile gönderilir: kenar sunucu onları hiç saklamaz, her istek ana sunucuya gider. Kampanya sayfası gibi herkese açık olanlar ise public kalır.
Herkese açık sayfa değişince kenar sunucular eski kopyayı süresi dolana kadar vermeye devam eder. Yayında önbellek temizlemeKenar sunuculardaki bir sayfanın kopyasını süresi dolmadan silme isteği. Yayından sonra eski sürümün dağıtılmasını önler.Sözlükte gör → isteği gönderirsen, bir sonraki istek yeni sürümü getirir.
Kafam karıştı, daha basit anlat
Kişisel sayfa private ve no-store. Herkese açık sayfa public, ve yayında temizlenir.
Kişiye özel bir sayfa public olarak önbelleğe alınırsa ne olur?
Kişiye özel bir cevap için hangi başlık uygundur?
Kendin gör
İki kenar sunucu, sekiz istek, bir yayın
Tohum 293558- Ayşe (İzmir) /kampanyalar
- Bora (İzmir) /kampanyalar
- Ayşe (İzmir) /hesabim
- Bora (İzmir) /hesabim
- Cem (Ankara) /kampanyalar
- — yayın: kampanya sayfası değişti —Bora (İzmir) /kampanyalar
- Cem (Ankara) /kampanyalar
- Ayşe (İzmir) /kampanyalar
↗ ana sunucu: 0 · ✓ kenardan: 0 · ✕ sızıntı: 0 · ⚠ eski: 0
Şu an ne oldu?
CDN önbelleği yok
İzmir ve Ankara’da birer kenar sunucu var; ana sunucu tek.
Görevler0/3
Bir müşteri başka birinin hesap sayfasını görsünaçık
İpucu
Her şeyi public önbelleğe al.
Sızıntı olmasın, ama yayından sonra eski kampanya görünsünaçık
İpucu
Kişisel sayfaları ayır, temizlemeyi unut.
Sızıntı ve eski sürüm olmasın, en az iki istek kenardan gelsinaçık
İpucu
Ayır ve yayında temizle.
Olay günlüğü (0)
Henüz olay yok. Oynat veya adımla.
- Varsayılanla oynat. Her istek ana sunucuya gitti; değişmeyen kampanya sayfası bile.
- “Her cevap 1 saat public” seç. Bora, Ayşe’nin hesap sayfasını kenar sunucudan aldı.
- “Kişisel sayfalar private” seç. Sızıntı bitti, ama yayından sonra üç istek eski kampanyayı gördü.
- Temizlemeyi de aç. Yayından sonraki ilk istek yeni sürümü ana sunucudan aldı, sonraki kenardan geldi.
Kampanya sayfası bir saat public. Yayında sayfa değişti ama temizleme yapılmadı. Ne olur?
Önbellek temizlemeden (purge) sonraki ilk istek ne yapar?
Tuzaklar
Varsayılan kuralları körü körüne açmak. “Bütün HTML’i önbelleğe al” gibi bir CDN ayarı, oturum çerezine bakmadan kişisel sayfaları da saklayabilir. Kişisel sayfalar başlıklarıyla açıkça hariç tutulmalı.
Temizlemeyi unutmak. Yayın betiği, değişen herkese açık sayfalar için temizleme isteğini de göndermeli. Dosya adında içerik özeti olan dosyalar ise hiç temizlenmek zorunda değildir.
Önbelleği test etmemek. “Kişisel sayfa no-store mu?” sorusu bir testle kontrol edilmeli; bir başlık kaybolursa sızıntı sessizce başlar.
Kafam karıştı, daha basit anlat
Kişisel sayfaları açıkça hariç tut, yayında temizle, başlıkları testle koru.
CDN'de 'bütün HTML'i önbelleğe al' ayarı neden tehlikelidir?
Derinleş · İnternet şubesi: kampanya kenarda, hesap asla 4 dosya · ~71 satır · ilk okumada atlayabilirsin
Kendini sına
Kenar sunucu, aynı adresi isteyen iki kullanıcının farklı kişiler olduğunu kendiliğinden bilir.
Adında içerik özeti olan dosyaların (app.3f9a.js) yayında temizlenmesi gerekir mi?
Aklında kalacak üç şey
- 1 CDN, cevapların kopyasını kullanıcıya yakın kenar sunucularda tutar. Herkese açık ve sık istenen sayfalar ana sunucuya gitmeden gelir.
- 2 Kenar sunucu için bir adres, bir sayfadır; kimin istediğini bilmez. Kişiye özel cevaplar private ya da no-store olmalı, yoksa bir müşteri başkasının sayfasını görür.
- 3 Uzun süre önbellekte tutulan sayfa, yayında temizlenmelidir. Temizlenmezse kenar sunucular eski sürümü süresi dolana kadar vermeye devam eder.
4 kart sonraki derste seni bekliyor