Cache anahtarı ve purge: "purge ettim ama hâlâ eski" neden olur
Cache'lenen her nesne, istekten üretilen bir anahtar altında saklanır — şema, host, yol ve query string. Purge yalnızca tam o anahtarı adreslediğinde girdiyi temizler. Bu tek fikir, "purge çalışmadı" vakalarının neredeyse hepsini açıklar.
Cache, güvenlik, WAF ve purge
Cache anahtarı ve purge: "purge ettim ama hâlâ eski" neden olur
Cache'lenen her nesne, istekten üretilen bir anahtar altında saklanır — şema, host, yol ve query string. Purge yalnızca tam o anahtarı adreslediğinde girdiyi temizler. Bu tek fikir, "purge çalışmadı" vakalarının neredeyse hepsini açıklar.
İlgili araçlar ve okuma
Bu konunun yaslandığı iki panel başlığı ve API + cdnctl örnekli rehber sürümü.
Cache durum başlıklarını okuyun
HIT, MISS, BYPASS, EXPIRED — bu iş akışının teşhis yarısı.
Teşhisi özetiyle değil, tam genel URL ile yapın (şema + host + yol + query).
Kullanım senaryoları
Deploy sonrası bir yolu purge ettiniz ama bir ziyaretçi hâlâ eski sürümü görüyor. Neredeyse her vakada purge çalışmıştır — yalnızca ziyaretçiye servis edilenden farklı bir cache girdisini temizlemiştir (query-string varyantı, mobil kopya ya da ziyaretçinin kendi tarayıcı cache'i).
Akış
Ziyaretçinin eski gördüğü TAM URL'i alın — şema (https), host (www ya da apex) ve varsa query string dahil. "Ürünler sayfası" yetmez; /products ile /products?page=2 farklı cache girdileridir.
CDN'in gerçekte ne yaptığına bakın: tam o URL'e `curl -I` atın ve `X-Proxy-Cache-MT` başlığını okuyun. HIT ise CDN cache'ten servis etmiştir; MISS ya da BYPASS ise eski içeriği servis eden CDN değildir.
Purge Yönetimi'nde probleme uyan kapsamla purge edin: tek URL için tam yol, bir yolun altındaki her şey için klasör purge'ü, yapı sitenin genelinde değiştiyse hesap geneli purge.
Teşhis ettiğiniz gibi doğrulayın: aynı tam URL'i tekrar isteyin; önce MISS (origin'den taze), sonra HIT beklenir. Kendi tarayıcınız hâlâ eskiyi gösteriyorsa sert yenileme yapın — CDN, tarayıcı cache'lerine uzanamaz.
Kontroller
Query string ayrı girdi yaratır: /banner.jpg ile /banner.jpg?v=2 bağımsız cache'lenir. Birini purge etmek diğerine dokunmaz.
Şema ve host anahtarın parçasıdır: http/https ve www/apex ayrı girdilerdir. Ziyaretçilerinizin gerçekte kullandığı kanonik biçimi purge edin.
Mobil ve masaüstü aynı yolun ayrı kopyaları olabilir — yalnızca telefonlardan gelen "eski" şikâyeti genellikle mobil varyanttır.
Purge CDN'i temizler, ziyaretçinin tarayıcı cache'ini asla. O son pencereyi sınırlayan şey bir purge daha değil, cache kurallarınızdaki tarayıcı TTL'idir.
Sık sorulan sorular
Purge "başarılı" dedi ama sayfa hâlâ eski — başarısız mı oldu?
Neredeyse kesin hayır. Tam URL'e `curl -I` ile teşhis edin: purge'den sonraki ilk istekte MISS görüyorsanız CDN girdisi temizlenmiştir; bayat kopya başka yerdedir — URL'in başka bir varyantı ya da izleyicinin tarayıcı cache'i.
/products'ı purge ettim ama /products?page=2 ve /products?utm_source=x hâlâ eski.
Her query-string kombinasyonu kendi cache girdisidir. Yolun altındaki her girdiyi temizlemek için klasör/önek purge'ü kullanın ya da en yoğun varyantları açıkça purge edin.
Her deploy'dan sonra purge etmem gerekiyor mu?
HTML'iniz uzun TTL ile cache'leniyorsa evet — değişen yolları deploy adımı olarak purge edin. Purge API'si ve cdnctl tam bunun için var; kapsamlı bir purge ile biten deploy script'i bu sınıf problemi hiç yaşamaz.
"Tümünü purge et"i ne zaman kullanmalıyım?
URL yapısı site genelinde değiştiğinde (taşıma, yeniden tasarım) ve yol bazlı purge uzun bir tahmin listesine dönüşecekse. Bilinçli kullanın: hemen ardından cache yeniden ısınana kadar her istek MISS'tir, origin'iniz kısa süre tam trafiği taşır.