WEB / WEB-09.04
CDN, edge ve origin ilişkisi
Duru edge’den bir body aldığında origin her zaman çalışmış olmaz. Public MISS/HIT ve personal bypass ile iki hop’un sahipliğini ayır.
1. Core · Mekanizma
Hareket olmadan bütün senaryoları oku
Public MISS
- Request hazırlandı
Duru representation için GET hazırlar; edge ve origin henüz bu request’i almamıştır.
- Browser / Duru
- GET /catalog ready
- Edge / public cache
- Cache: empty
- Origin / Atlas
- Request absent
- Edge request’i aldı
Edge request’i alır; body seçimi ve shared storage kararı henüz gerçekleşmemiştir.
- Browser / Duru
- Waiting edge
- Edge / public cache
- GET /catalog received; cache empty
- Origin / Atlas
- Request absent
- Outbound request hazır
Edge local policy ile MISS seçer ve outbound GET hazırlar; bu lookup bir network mesajı değildir.
- Browser / Duru
- Waiting edge
- Edge / public cache
- MISS; outbound GET ready
- Origin / Atlas
- Request absent
- Origin request’i aldı
Origin edge’in request’ini alır; Browser bu sırada hâlâ edge response’ını bekler.
- Browser / Duru
- Waiting edge
- Edge / public cache
- MISS; waiting origin
- Origin / Atlas
- GET /catalog received
- Origin response hazır
Origin örnekteki body ve cache metadata’sını local olarak hazırlar; body henüz edge’e ulaşmamıştır.
- Browser / Duru
- Waiting edge
- Edge / public cache
- MISS; waiting origin
- Origin / Atlas
- 200 ready; Atlas catalog; public, max-age=60
- Origin response ulaştı
Origin’in 200 body ve metadata’sı edge’e ulaşır; Browser’ın gözlenen state’i henüz değişmez.
- Browser / Duru
- Waiting edge
- Edge / public cache
- 200 received; Atlas catalog; storage pending
- Origin / Atlas
- 200 ready; Atlas catalog; public, max-age=60
- Delivery kararı hazır
Edge, public storage eligibility kurallarına göre body’yi saklar ve browser için response hazırlar. Browser henüz response’u almamıştır.
- Browser / Duru
- Waiting edge
- Edge / public cache
- 200 ready; Atlas catalog; public v1 stored
- Origin / Atlas
- 200 ready; Atlas catalog; public, max-age=60
- Browser response aldı
Duru son hop’ta body’yi öğrenir; bu arrival ile önceki origin→edge arrival ayrı exchange sınırlarıdır.
- Browser / Duru
- 200 received; Atlas catalog
- Edge / public cache
- 200 ready; Atlas catalog; public v1 stored
- Origin / Atlas
- 200 ready; Atlas catalog; public, max-age=60
Public HIT
- Public GET hazır
Duru public catalog GET’ini hazırlar; edge’deki entry’nin revision’ı v1, current age’i 5 olarak verilmiştir.
- Browser / Duru
- GET /catalog ready
- Edge / public cache
- Public v1; age5; lifetime60
- Origin / Atlas
- Not contacted
- Edge request’i aldı
Edge public GET’i alır; reusable entry seçimi bir sonraki local karar olarak görünür.
- Browser / Duru
- Waiting edge
- Edge / public cache
- GET received; public v1; age5
- Origin / Atlas
- Not contacted
- HIT response hazır
Key eşleşir ve 5 < 60 olduğu için public HIT seçilir. Origin request’i hazırlanmaz; body local entry’den alınır.
- Browser / Duru
- Waiting edge
- Edge / public cache
- HIT; 200 ready; Atlas catalog; Age5
- Origin / Atlas
- Not contacted
- Cached body ulaştı
Duru edge’den public body’yi alır; bu branch origin’in yeni çalışmasını göstermez.
- Browser / Duru
- 200 received; Atlas catalog; Age5
- Edge / public cache
- HIT; 200 ready; Atlas catalog; Age5
- Origin / Atlas
- Not contacted
- Owner farkını oku
Browser observation tamamdır; origin actor’unun not contacted kalması kısa delivery yolunun anlamıdır.
- Browser / Duru
- Public body observed
- Edge / public cache
- Public v1 retained
- Origin / Atlas
- Not contacted
Personal bypass
- Request hazırlandı
Duru representation için GET hazırlar; edge ve origin henüz bu request’i almamıştır.
- Browser / Duru
- GET /notes/mine ready
- Edge / public cache
- Cache: public v1 retained
- Origin / Atlas
- Request absent
- Edge request’i aldı
Edge request’i alır; body seçimi ve shared storage kararı henüz gerçekleşmemiştir.
- Browser / Duru
- Waiting edge
- Edge / public cache
- GET /notes/mine received; cache public v1 retained
- Origin / Atlas
- Request absent
- Outbound request hazır
Edge local policy ile bypass seçer ve outbound GET hazırlar; bu lookup bir network mesajı değildir.
- Browser / Duru
- Waiting edge
- Edge / public cache
- bypass; outbound GET ready
- Origin / Atlas
- Request absent
- Origin request’i aldı
Origin edge’in request’ini alır; Browser bu sırada hâlâ edge response’ını bekler.
- Browser / Duru
- Waiting edge
- Edge / public cache
- bypass; waiting origin
- Origin / Atlas
- GET /notes/mine received
- Origin response hazır
Origin örnekteki body ve cache metadata’sını local olarak hazırlar; body henüz edge’e ulaşmamıştır.
- Browser / Duru
- Waiting edge
- Edge / public cache
- bypass; waiting origin
- Origin / Atlas
- 200 ready; Duru reading note; no-store
- Origin response ulaştı
Origin’in 200 body ve metadata’sı edge’e ulaşır; Browser’ın gözlenen state’i henüz değişmez.
- Browser / Duru
- Waiting edge
- Edge / public cache
- 200 received; Duru reading note; storage pending
- Origin / Atlas
- 200 ready; Duru reading note; no-store
- Delivery kararı hazır
Edge no-store nedeniyle personal body’yi saklamaz; public entry korunur ve Browser response hazır olur.
- Browser / Duru
- Waiting edge
- Edge / public cache
- 200 ready; Duru reading note; not stored; public v1 retained
- Origin / Atlas
- 200 ready; Duru reading note; no-store
- Browser response aldı
Duru son hop’ta body’yi öğrenir; bu arrival ile önceki origin→edge arrival ayrı exchange sınırlarıdır.
- Browser / Duru
- 200 received; Duru reading note
- Edge / public cache
- 200 ready; Duru reading note; not stored
- Origin / Atlas
- 200 ready; Duru reading note; no-store
ROLLER · STATE · VERİ AKIŞI
Duru hangi server’a bağlanıyor?
Atlas kitap kataloğunun public URL’si books.example olsun. Duru bu URL’ye giderken seçilmiş mimaride connection’ın server peer’i Atlas’ın application process’i değil, CDN edge’idir. URL’nin public authority’si değişmeden delivery yolu araya başka bir owner eklemiştir. CDN, içeriğin kullanıcılara dağıtımını birden fazla konumdan sağlayan bir ağdır; çizimdeki tek edge bu ağın tamamı değildir.
Burada “yakın” fiziksel mesafe veya her zaman en hızlı node garantisi değildir. Edge’in nasıl bulunduğu önceki DNS ve routing derslerinin sorusudur. Bu örnek edge seçildikten sonra başlar; bir topology çizimi Anycast kararını, kapasiteyi veya dünya çapındaki cache hit oranını ölçmez. Çizilen kısa yol, gecikmenin ölçülmüş kanıtı değildir.
Origin rolünü makine adıyla karıştırma
Atlas origin bu örnekte public catalog representation’ını üretir. Response’un kaynağı olmak ile her browser request’inde doğrudan socket peer olmak farklı rollerdir. Origin tek process, load balancer arkasındaki uygulamalar veya Atlas’ın başka bir service’i olabilir. Burada v1 revision’ını üreten tek bir mantıksal origin vardır.
Edge, origin’e request gönderirken HTTP client rolündedir; Duru’ya response dönerken HTTP server rolündedir. İki hop’un connection, error ve response arrival sınırları ayrıdır. Browser’ın edge’den bir body alması, aynı anda origin’e bağlandığını veya origin’in o request için çalıştığını kanıtlamaz.
MISS: iki exchange, üç owner
İlk senaryo boş edge cache ile başlar. Duru public /catalog için GET hazırlar. Edge request’i alınca eşleşen response bulamaz; kendi outbound GET’ini hazırlayıp origin’e gönderir. Origin, Atlas catalog body’sini ve cache metadata’sını hazırlar. Hazırlık adımları local işlemdir; wire yalnız message karşı aktöre ulaştığında gösterilir.
Origin response’u edge’e ulaştığında Duru henüz sonucu öğrenmez. Edge, örnekte verilen storage eligibility kurallarına göre public representation’ı saklar ve Duru için response hazırlar. Son edge→browser aktarımıyla body Duru’ya ulaşır. Aynı body iki hop’ta taşınsa da bunlar tek bir uçtan uca socket alışverişi değildir.
HIT: origin’in sessiz kalması anlamlıdır
İkinci senaryo, ilgili key için yeniden kullanılabilir public v1 entry ile başlar. Edge response’u local entry’den hazırlar; origin’e yeni request göndermez. Origin’in “not contacted” kalması, response’un edge’deki kopyadan geldiğini gösterir. Browser’ın gördüğü body bu senaryoda origin’in yeniden çalışmasının sonucu değildir.
Örnekte current_age = 5 ve freshness_lifetime = 60 verilmiştir. 5 < 60 olduğu için entry fresh’tir. Age, origin timestamp’i veya uygulama verisinin iş açısından doğruluğuna dair garanti değildir. Entry seçimi, storage eligibility ve freshness ayrı kararlardır. current_age’ın nasıl hesaplandığı önceki cache dersinde açıklanır.
Personal response’ı public entry yapma
Üçüncü senaryo Duru’nun /notes/mine representation’ını kullanır. Bu route shared cache’i baştan bypass eder; origin response’u da no-store taşır. Edge response’u iletir ama public cache’e yazmaz. Duru/Atlas context’ine izin verilmiş olması örneğin başlangıç koşuludur; burada login veya permission enforcement çalıştırılmaz.
Bu konservatif tasarım, bütün authenticated response’ların HTTP tarafından asla cache edilemeyeceği iddiası değildir. Authorization taşıyan request, cookie tabanlı session ve uygulamaya özel identity aynı mekanizma değildir. Bu Atlas örneğinde ihtiyaç public catalog reuse ile sınırlı olduğu için personal route shared storage’a hiç girmiyor.
Her TLS hop’u ayrı güven sınırıdır
TLS-terminating edge seçilmişse Browser↔edge ile edge↔origin ayrı güven sınırlarıdır. İlk hop’un güvenli olması ikinci hop’un encryption ve peer verification durumunu tek başına açıklamaz. Cloudflare Full (strict) belgesi, origin certificate verification’ın ayrıca uygulandığı bir vendor örneğidir; bu ders hiçbir Cloudflare setting değiştirmez.
Sahnede HTTP message’ın hangi aktöre ulaştığı izlenir; certificate, TLS record ve gerçek CDN routing gösterilmez. Public MISS/HIT ile personal bypass ayrımı, body’nin nereden geldiğini ve shared store’a girip girmediğini açıklar. Gerçek CDN için bu akışa TLS peer verification, routing ve service configuration gibi ayrı sorumluluklar eklenir.
2. Red · Güven ve etki
Hareket olmadan bütün senaryoları oku
Public HIT
- Stored public body kendi metadata’sıyla seçildi
GET /catalog için body Atlas catalog, allowedAudience public ve Cache-Control public, max-age=60’tır. selectedKey GET /catalog’dur. Bu key yalnız seçilmiş public route’a aittir; genel HTTP cache key parser’ı değildir.
- Route/delivery ledger
- Public catalog / key GET /catalog
- Audience/reuse gate
- Policy bekliyor
- Recipient boundary
- Hüküm yok
- Fresh public copy HIT için eligible oldu
HIT currentAge 5 ve freshnessLifetime 60 verir. Body storage ve reuse koşulları bu public contract’ta sağlanır. Body’nin aynı görünmesi tek başına HIT kanıtı değildir; originContacted kararına da bakılır.
- Route/delivery ledger
- Public catalog / key GET /catalog
- Audience/reuse gate
- Age5 < lifetime60 / public reuse eligible
- Recipient boundary
- Hüküm yok
- Başarılı reader response origin health sayılmadı
originContacted false’tur. Stored catalog’ın teslim edilebilmesi origin’in o an reachable veya healthy olduğunu kanıtlamaz. Edge ve origin ayrı owners’dır; HIT’in normal oluşu origin log’unda event yokluğunu açıklayabilir.
- Route/delivery ledger
- Public catalog / key GET /catalog
- Audience/reuse gate
- Age5 < lifetime60 / public reuse eligible
- Recipient boundary
- Public HIT / current origin health unknown
- Personal target farklı route class taşıdı
GET /notes/mine body Duru reading note ve no-store metadata’sı taşır. Route class bypass-before-lookup’tır. Public catalog’ın cache key’i personal response için kullanılmaz; URL görünümü classification yerine geçmez.
- Route/delivery ledger
- Personal /notes/mine / bypass-before-lookup
- Audience/reuse gate
- Age5 < lifetime60 / public reuse eligible
- Recipient boundary
- Public HIT / current origin health unknown
- Personal policy shared lookup’tan önce uygulandı
Personal branch shared body’yi seçmeden origin policy yoluna gider; cacheKeysAfter yalnız GET /catalog içerir. Authorization allowed olarak verilmiştir, hesaplanmaz. Cache bypass user/object permission’ın yerine geçmez.
- Route/delivery ledger
- Personal /notes/mine / bypass-before-lookup
- Audience/reuse gate
- Personal bypass / cache keys unchanged
- Recipient boundary
- Public HIT / current origin health unknown
- Delivery contract tenant isolation claim’i olmadı
Bu public reuse ve personal bypass contract’ı öğrenme örneğidir. Gerçek CDN, TLS, authenticated user veya bütün route isolation’ı ölçülmez. Classification ile business authority farklı gate’ler olarak tutulur.
- Route/delivery ledger
- Personal /notes/mine / bypass-before-lookup
- Audience/reuse gate
- Personal bypass / cache keys unchanged
- Recipient boundary
- Route delivery scoped / user policy separate
Hop evidence
- MISS origin exchange gereksinimiyle seçildi
Independent sequence’in ilk catalog MISS’i originCalls 0’dan 1’e çıkarır. Origin response’tan sonra cache key eklenir. Bu local ledger’daki counts benchmark veya vendor access-log alanları değildir.
- Route/delivery ledger
- MISS: origin calls0→1 / catalog key added
- Audience/reuse gate
- Policy bekliyor
- Recipient boundary
- Hüküm yok
- Stored state origin receipt’ten önce oluşmadı
Edge ancak response aldıktan ve storage kararı verdikten sonra reusable copy tutabilir. Cache lookup local işlemdir; origin transfer ayrı exchange’dir. Bu review sıralama kuralını inceler, yeni network ölçümü yapmaz.
- Route/delivery ledger
- MISS: origin calls0→1 / catalog key added
- Audience/reuse gate
- Receive response before storage decision
- Recipient boundary
- Hüküm yok
- İlk hop sonucu bütün deployment’a genişlemedi
Public response başarısı DNS, TLS peer veya tüm CDN availability kanıtı değildir. MISS failure da bütün edge ağı outage demek değildir. Gözlenen en küçük hop ve owner kararı ayrı yazılmalıdır.
- Route/delivery ledger
- MISS: origin calls0→1 / catalog key added
- Audience/reuse gate
- Receive response before storage decision
- Recipient boundary
- Selected hop known / deployment availability unknown
- HIT ile BYPASS count değişimleri ayrıldı
İkinci catalog HIT originCalls 1’de kalır. Personal BYPASS 1’den 2’ye çıkar; catalog key korunur. Aynı final status iki request’in aynı intermediate owner’lardan geçtiğini göstermez.
- Route/delivery ledger
- HIT 1→1 / BYPASS 1→2
- Audience/reuse gate
- Receive response before storage decision
- Recipient boundary
- Selected hop known / deployment availability unknown
- Connection security her hop için ayrı kanıt istedi
TLS-terminating deployment’ta browser-edge ve edge-origin peer doğrulamaları ayrı değerlendirilir. Buradaki loopback HTTP native sınırı certificate testine dönüşmez. Origin access restriction veya failover davranışı bu ledger’da yoktur.
- Route/delivery ledger
- HIT 1→1 / BYPASS 1→2
- Audience/reuse gate
- Per-hop TLS verification not measured
- Recipient boundary
- Selected hop known / deployment availability unknown
- Control hedefi route contract’ında kaldı
Kontrol public response classification, origin-call ilişkisi ve personal cache bypass’tır. Purge, failover ve gerçek provider behavior için kendi config ve runtime evidence’ı gerekir. Bu bounded ledger bunları yapılmış saymaz.
- Route/delivery ledger
- HIT 1→1 / BYPASS 1→2
- Audience/reuse gate
- Per-hop TLS verification not measured
- Recipient boundary
- Check classification/calls/bypass; provider scope separate
VARSAYIM · SINIR · KONTROL
Bir body’nin hangi owner’dan geldiğini sor
Bir review’da Duru’nun gördüğü response ile origin access log’unu aynı event sayma. Public HIT branch’inde origin log’u hiç oluşmayabilir; bu normaldir. Edge request, origin request ve Browser observation için ayrı correlation sınırı gerekir. Bu dersin ledger’ındaki originContacted boolean’ı yalnız selected fixture’ın kararıdır; gerçek bir log alanı veya vendor header ismi değildir.
Cache’ten alınan doğru public catalog, personal endpoint için uygun delivery kanıtı olmaz. Görselde HIT görüldü diye bütün route’ların edge’den güvenle sunulabileceğini çıkarma. Representation’ın hedef kitlesi, route class ve reuse koşulları birlikte incelenir; CSS dosyasıyla kullanıcıya ait notun aynı uzantıya veya status’a sahip olması aynı policy’yi gerektirmez.
Başarılı ilk hop bütün zinciri doğrulamaz
Edge public body’yi önceden tutuyorsa başarılı Browser response, origin’in o an healthy veya reachable olduğunu göstermez. Tersine bir MISS failure da bütün CDN ağına dair outage ölçümü değildir. İnceleme sorusunu küçük tut: bu request için hangi hop çalıştı, hangi owner karar verdi, hangi state gözlendi?
Edge’in uygulama sınırına eklenmesi, origin-side authorization veya safe output gereksinimini kaldırmaz. Public cache sınıflandırması ile authenticated business kararını ayrı değerlendir. Bu workbook’ta kişisel veri yerine fixed bir reading note kullanılır; sonuçlardan başka kullanıcıya erişim, bypass veya gerçek ağ keşfi çıkarılmaz.
3. Blue · Güvenli geliştirme ve savunma
Hareket olmadan bütün senaryoları oku
Call sequence
- Bağımsız sequence before/after ile işaretlendi
Örnekte edge adapter’ı cache kararını ve key listesini, origin server’ı ise call sayacını üretir. independentSequence her request öncesi ve sonrası bu iki kaydı eşleştirir: MISS 0→1, HIT 1→1, BYPASS 1→2. HIT sırasında oluşmayan origin request’i için event beklenmez; başka bir trace’te eksik log aynı kararın kanıtı değildir. MISS, HIT ve BYPASS ayrı request observations’dır. Origin counts sırasıyla 0→1, 1→1 ve 1→2’dir. Üç response’un body’sine bakmak yerine her request’in origin-contact scope’u ayrı incelenir.
- Delivery observations
- MISS +1 / HIT +0 / BYPASS +1
- Call/cache comparison
- Policy bekliyor
- Evidence conclusion
- Hüküm yok
- HIT correlation current request’e bağlandı
HIT stored Atlas catalog’ı seçer ve originContacted false verir. Earlier MISS’in origin event’i bu HIT request’inin yeni origin event’i değildir. Correlation request sınırını korumadan counts yanlış yorumlanabilir.
- Delivery observations
- MISS +1 / HIT +0 / BYPASS +1
- Call/cache comparison
- HIT request has no new origin call
- Evidence conclusion
- Hüküm yok
- Cache key retention personal body’den ayrıldı
Personal response Duru reading note 17 UTF-8 byte’tır; catalog 13 byte’tır. BYPASS sonrasında keys yalnız GET /catalog kalır. Body count ile storage membership farklı evidence alanlarıdır.
- Delivery observations
- Catalog13 / personal17 / only catalog stored
- Call/cache comparison
- HIT request has no new origin call
- Evidence conclusion
- Hüküm yok
- Normal negative control cache membership’i korudu
Public MISS key ekler; personal BYPASS eklemez. Bu normal karşılaştırma shared store sınırını gösterir. Authenticated user hesaplanmadığı için successful bypass gerçek tenant enforcement sonucuna çevrilmez.
- Delivery observations
- Catalog13 / personal17 / only catalog stored
- Call/cache comparison
- Public stored / personal not stored
- Evidence conclusion
- Hüküm yok
- Native sınırı local policy behavior olarak tutuldu
Dersin native fixture’ı iki owned plaintext loopback server için seçilmiş reuse/bypass davranışını ölçebilir. Authored scene yeni çalışmış test değildir. CDN routing, DNS, TLS ve purge/failover bundan ayrı evidence ister.
- Delivery observations
- Catalog13 / personal17 / only catalog stored
- Call/cache comparison
- Public stored / personal not stored
- Evidence conclusion
- Selected local policy / CDN runtime unmeasured
- Regression source ve body association’ı birlikte kontrol etti
Decision reason, origin call delta, route class ve cache membership birlikte yeniden kontrol edilir. Equal body tek başına HIT ölçütü değildir. Sensitive note body’sini loglamak yerine bounded metadata ile correlation kurulabilir.
- Delivery observations
- Catalog13 / personal17 / only catalog stored
- Call/cache comparison
- Public stored / personal not stored
- Evidence conclusion
- Recheck decision/call delta/route/cache membership
Origin gap
- Absent origin event için iki normal açıklama ayrıldı
Örnekte edge adapter’ı cache kararını ve key listesini, origin server’ı ise call sayacını üretir. independentSequence her request öncesi ve sonrası bu iki kaydı eşleştirir: MISS 0→1, HIT 1→1, BYPASS 1→2. HIT sırasında oluşmayan origin request’i için event beklenmez; başka bir trace’te eksik log aynı kararın kanıtı değildir. Origin log’da request event’i görünmeyebilir: normal HIT origin’e gitmemiş olabilir veya log coverage eksik olabilir. Artifact HIT kararını sağlar; yeni trace için bu değer otomatik aktarılmaz.
- Delivery observations
- No origin event: possible HIT or coverage gap
- Call/cache comparison
- Policy bekliyor
- Evidence conclusion
- Hüküm yok
- Edge decision kaydı ayrıca arandı
Decision HIT ve originContacted false gözlenirse yokluk seçilmiş route contract’ıyla açıklanabilir. Decision record yoksa body Atlas catalog görünmesi origin’in kullanılmadığını kanıtlamaz. Observer scope ayrıca gerekir.
- Delivery observations
- No origin event: possible HIT or coverage gap
- Call/cache comparison
- HIT evidence needed independently of body
- Evidence conclusion
- Hüküm yok
- Alternatif review missing decision’ı korudu
Bu review’de edge decision ve origin observer coverage bilinmez. Normal sequence’in 1→1 count’u eksik trace yerine kopyalanmaz. Event yokluğu request’in hiç olmadığı, origin’in healthy olduğu veya outage yaşandığı sonucunu vermez.
- Delivery observations
- Edge decision and origin coverage unknown
- Call/cache comparison
- HIT evidence needed independently of body
- Evidence conclusion
- Hüküm yok
- Correlation farklı owners için ayrıldı
Edge request, origin request ve browser observation aynı event değildir. HIT’te origin request olmayabilir. Review, parent/request ilişkisini ve observation noktasını belirlemeden bütün timeline’ı tek success field’ına indirmez.
- Delivery observations
- Edge decision and origin coverage unknown
- Call/cache comparison
- Separate edge/origin/browser observation scopes
- Evidence conclusion
- Hüküm yok
- Origin-contact verdict unknown kaldı
Bu eksik trace için origin contacted UNKNOWN kalır. Normal HIT’in açıklayıcı olması her missing log’un HIT olduğunu göstermez. Negative event ve unreliable observation ayrı belirsizlik kaynaklarıdır.
- Delivery observations
- Edge decision and origin coverage unknown
- Call/cache comparison
- Separate edge/origin/browser observation scopes
- Evidence conclusion
- UNKNOWN: origin contact for this request
- Hedefli yeni evidence minimum scope’ta seçildi
İlerlemek için request-scoped edge decision, origin call association ve bounded coverage gerekir. Full body, credential veya bütün network inventory gerekli değildir. Yeni evidence gelmeden healthy/unhealthy verdict’i verilmez.
- Delivery observations
- Edge decision and origin coverage unknown
- Call/cache comparison
- Separate edge/origin/browser observation scopes
- Evidence conclusion
- Needed: decision/request association/coverage
UYGULAMA · GÜVENLİK KONTROLÜ · DOĞRULAMA
Public delivery contract’ını açık yaz
Örnekte edge adapter’ı cache kararını ve key listesini, origin server’ı ise call sayacını üretir. independentSequence her request öncesi ve sonrası bu iki kaydı eşleştirir: MISS 0→1, HIT 1→1, BYPASS 1→2. HIT sırasında oluşmayan origin request’i için event beklenmez; başka bir trace’te eksik log aynı kararın kanıtı değildir. Atlas için iki route class tanımla: public catalog reusable; personal note bypass ve no-store. Bu bir örnek policy’dir, otomatik URL extension tahmini değildir. Her response’ın body ve cache metadata’sı aynı classification’dan üretilir; public response’ın freshness süresi veya key’i değiştiğinde ilgili fixture beklentisi de değişir.
Origin’den gelen response’ı edge’e ulaşmadan stored diye işaretleme. Edge’te storage kararı verildikten sonra Browser response prepared olur; Browser bilgisi ancak arrival’da ilerler. Hareketsiz mod aynı completed state’leri göstermelidir. Böylece model, network transfer’ı ile cache lookup gibi local işlemi farklılaştırır.
Kontrolü owner sınırında yap
Bağımsız expected observation’da ilk catalog MISS bir origin request, ikinci catalog HIT sıfır ek origin request, personal GET bir ek origin request üretir. Personal response cache state’ini değiştirmemelidir. Body eşitliği tek başına HIT kanıtı değildir; origin call count ve karar kaydıyla birlikte değerlendirilir.
Gerçek TLS-terminating deployment review’unda iki peer’in doğrulamasını ayrı kanıtla; native loopback HTTP sonucunu certificate testi diye sunma. Origin access restriction, cache purge ve failover gibi operational kararlar kendi konfigürasyonuna bağlıdır. Bu dersteki küçük test bunları ölçmeden public reuse ve bypass sınırını doğrular.
ŞİMDİ VAKAYA UYGULA
HIT, MISS ve personal BYPASS hangi owner ve evidence farklarını oluşturur?
Public /catalog ilk request’te origin’den alınır, sonra fresh HIT ile edge’deki Atlas catalog kullanılır. Personal /notes/mine shared lookup’tan önce bypass edilir ve no-store taşır. Origin log’unda event olmaması tek başına request veya health hükmü vermez.
Vakadaki representation hangi cache owner’dan geliyor? Key kapsamı, freshness ve kullanıcının context’ini birlikte değerlendir; hit olması doğru viewer’a ait olduğunu kanıtlamaz.
Bağlı vaka dosyasını aç ↗ÖRNEĞİ BİRLİKTE OKUYALIM
Edge delivery karar ve origin-call defteri
Bir alan seç; hangi sonucu desteklediğini ve nerede yetersiz kaldığını incele.
Ham kaydı ve alan açıklamalarını oku
{
"public": {
"method": "GET",
"target": "/catalog",
"body": "Atlas catalog",
"bodyOctets": 13,
"originCacheControl": "public, max-age=60",
"selectedKey": "GET /catalog",
"allowedAudience": "public"
},
"personal": {
"method": "GET",
"target": "/notes/mine",
"body": "Duru reading note",
"bodyOctets": 17,
"cacheControl": "no-store",
"routeClass": "bypass-before-lookup",
"authorization": "supplied allowed; not computed"
},
"hit": {
"currentAge": 5,
"freshnessLifetime": 60,
"originContacted": false,
"storedBody": "Atlas catalog"
},
"independentSequence": [
{
"case": "miss",
"originCallsBefore": 0,
"originCallsAfter": 1,
"cacheKeysAfter": [
"GET /catalog"
]
},
{
"case": "hit",
"originCallsBefore": 1,
"originCallsAfter": 1,
"cacheKeysAfter": [
"GET /catalog"
]
},
{
"case": "bypass",
"originCallsBefore": 1,
"originCallsAfter": 2,
"cacheKeysAfter": [
"GET /catalog"
]
}
],
"scope": "Owned selected policy; not a general RFC cache implementation or deployed CDN."
}- selectedKey
- Yalnız public catalog için seçilen local cache key; bütün HTTP cache key kurallarının parser’ı değildir.
- originContacted
- Bu request için outbound origin exchange var mı? Body eşitliği tek başına bu bilgiyi vermez.
- originCallsBefore / After
- Bağımsız seçilmiş sequence’in expected sayacı; benchmark veya üretim log alanı değildir.
- routeClass
- Personal response shared lookup’tan önce bypass edilir ve no-store ile relay edilir.
Sayısal age ve cache state supplied fixture’dır. Native check iki owned plaintext loopback HTTP server’ında seçilmiş public reuse/bypass davranışını gözler. CDN, DNS/routing, TLS/certificate, authenticated user veya purge/failover çalıştırılmaz.
İki yanlış kanı
CDN’de başarılı response, origin’in bu request’i işlediğini kanıtlar.
Reusable HIT, origin exchange olmadan tamamlanabilir. Edge ve origin observation’ları ayrı tutulur.
Browser’daki HTTPS, edge→origin hop’unun da doğrulandığını gösterir.
TLS-terminating mimaride her hop’un encryption ve peer verification sınırı ayrıdır.
SIRA SENDE
Bu hikâyeyi sen çöz.
Sonucu tahmin et, kanıtın sınırını bul ve nedenini kendi cümlenle anlat.
Public catalog cache hit’inde age=5 ve lifetime=60. Origin call kayıtları ne gösteriyor?
- Bu hit yeni origin call üretmez.
- Her CDN response için origin’e yeni request gider.
Gerekçeli cevabı oku
Bu hit yeni origin call üretmez. — originCallsBefore=1 ve originCallsAfter=1; originContacted=false. Public body edge’den yeniden kullanılır.
Personal /notes/mine neden public cache key listesine eklenmiyor?
Dersten seçilen artifact alanları; öğretim örneği
- personal.cacheControl
- no-store
- personal.routeClass
- bypass-before-lookup
- independentSequence[2].cacheKeysAfter
- ["GET /catalog"]
- CDN bütün personalized body’leri tek public GET key’inde saklar.
- Bu personal route cache lookup ve store yolunu atlar.
Gerekçeli cevabı oku
Bu personal route cache lookup ve store yolunu atlar. — Bypass origin call yapar, fakat cacheKeysAfter yalnız GET /catalog içerir. Permission sonucu ayrıca verilen girdidir.
Browser CDN’den response aldı. Origin’in o anda sağlıklı olduğu ve TLS’nin tek end-to-end connection olduğu çıkarılır mı?
Gerekçeli cevabı oku
Fresh hit origin’e gitmeden body döndürebilir; browser delivery origin health ölçümü değildir. CDN termination kullanılıyorsa browser–edge ve edge–origin TLS context’leri ayrıdır. Örnek cache kararlarını açıklar; gerçek CDN deployment veya certificate ölçümü yapmaz.
□ Edge hit’i origin health kanıtı saymadım.
□ İki hop’un TLS context’ini tek connection saymadım.
Uygulama konsolunu aç · request / response / browser
Request, URL, cookie ve DOM örneklerini ayrıca aç
Kaynaklar ve kapsam
- Cloudflare — What is a CDN?What is a CDN? · Is a CDN the same as a web host?
- RFC 9111 — HTTP Caching1 Introduction: shared and private caches · 2 Overview of Cache Operation · 3 Storing Responses in Caches · 4 Constructing Responses from Caches · 4.2 Freshness · 5.2.2.5 no-store
- Cloudflare — Full (strict) SSL/TLS encryption modesOverview: separate visitor/edge/origin encrypted hops · Use when: origin certificate requirements