deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Vercel blog

Vercel CDN artık Cookie'ye göre değişen yanıtları önbelleğe almıyor

Vercel'in CDN'i, Vary başlığında Cookie bulunan origin yanıtlarını artık önbelleğe almıyor; bu durum loglarda MISS ve vary_key_denied:cookie olarak görünüyor. İşte bunu tespit etme ve düzeltme yöntemi.

Vercel CDN artık Cookie'ye göre değişen yanıtları önbelleğe almıyor

Ne değişti

Vercel, CDN'inin Vary başlığında Cookie bulunan yanıtlara yaklaşımını değiştirdi. Vercel blogundaki bir changelog kaydına göre, CDN artık bu tür yanıtları edge'de saklamıyor. İstekler yine normal şekilde karşılanıyor — origin yanıtı değiştirilmeden geçiyor — ancak sonraki istekler için hiçbir şey saklanmıyor, dolayısıyla her sonraki erişim fiilen bir cache miss'e dönüşüyor.

Cookie'nin neden tek başına hedef alındığı

Vary başlığı, bir cache'e hangi istek başlıklarının yanıtı değiştirebileceğini söyler; böylece cache, her farklı başlık değeri için ayrı kayıt tutması gerektiğini bilir. Cookie burada sorunlu bir vakadır: çerezler genellikle oturum tanımlayıcıları gibi tek bir ziyaretçiye özgü değerler taşır. Cookie'ye göre vary yapılması bu nedenle cache'i, bir kez yazılan ve neredeyse hiç yeniden kullanılmayan çok sayıda parçaya bölebilir. Vercel bunu yüksek kardinaliteli bir caching sorunu olarak tanımlıyor ve yeni kural da bunu önleme biçimi. Vercel'in desteklediği diğer Vary başlıkları için caching davranışı değişmedi.

Etkilendiğinizi nasıl anlarsınız

Vercel iki sinyale işaret ediyor. Etkilenen rotalardaki x-vercel-cache yanıt başlığı, önceden HIT görünebilecek yerde MISS olarak okunacak. Runtime Logs daha spesifik bir ipucu sunuyor: cache nedeni vary_key_denied:cookie olarak görünecek. Bu neden, önbelleğe alınmasını beklediğiniz bir rotada görünüyorsa, bir sonraki adım origin'inizin döndürdüğü Vary başlığını incelemektir.

Vercel'in önerisi

Rehber iki duruma ayrılıyor.

Yanıt, ziyaretçinin hangi çerezleri gönderdiğinden bağımsız olarak aynıysa, Cookie'yi Vary'den çıkarın. Çıkarıldığında, yanıt Vercel'in diğer caching gereksinimlerini de karşılıyorsa CDN önbelleğine tekrar uygun hale gelir.

Yanıt gerçekten çerezlere bağlıysa — kişiselleştirilmiş sayfalar, oturum açılmış görünümler, ziyaretçi bazlı deneyler — Cookie'yi Vary'de tutun ve yanıtı Cache-Control: private ile işaretleyin. Bu, paylaşılan CDN cache'ine ziyaretçiye özgü içeriği saklamamasını açıkça söyler ki bu, bu yanıtların gerçekte ne olduğunun daha doğru bir tanımıdır.

Neden önemli

Buradaki arıza modu sessizdir. Hiçbir şey kırılmaz ve hiçbir hata ortaya çıkmaz; origin sadece eskisinden daha fazla iş yapar ve cache hit oranları sessizce düşer. Origin'in pahalı olduğu rotalarda — server-side render edilen sayfalar, hesaplama yoğun API handler'ları, rate limit'i olan upstream servisler — ekstra origin trafiği doğrudan artan gecikme ve maliyete dönüşebilir.

Bu değişiklik ekipleri aynı zamanda daha iyi caching hijyenine de yönlendiriyor. Vary: Cookie çoğu zaman rastgele ya da stack'in başka bir katmanından kopyalanarak ayarlanır; kimse cache etkilerini tartmaz. Vercel artık rota başına açık bir karar zorunlu kılıyor: ya yanıt çerezden bağımsızdır ve hiç Cookie'ye göre vary yapmamalı, ya da kişiselleştirilmiştir ve zaten paylaşılan bir cache'te bulunmamalıdır. Her iki cevap da bir iyileştirmedir; belirsizlik işte bu israfı yaratmıştı.

Vercel'de workload çalıştırıyorsanız, belirtiler metriklerinizde görünmeye başlamadan önce x-vercel-cache değerlerini kontrol etmek ve Runtime Logs içinde vary_key_denied:cookie aramak iyi olur.

  • #vercel
  • #cdn
  • #caching
  • #http
  • #web-performance

İlgili yazılar