Tahminsiz HTTP Önbellekleme: Cache-Control, ETag, Vary ve Sürümlü Dosyalar

Politikayı yanıt türüne göre seçip tarayıcı söylentisiyle değil isteklerle doğrulayın

HTTP Caching Without Guesswork: Cache-Control, ETag, Vary and Versioned Assets

HTML, sürümlü dosya, herkese açık API ve kimlik doğrulanmış yanıtlar için standarda dayalı önbellek matrisi.

Güvenilir HTTP önbellekleme, yanıtı kimin ne kadar süre yeniden kullanabileceğini ve güncelliğin nasıl doğrulanacağını belirleyerek başlar; kopyalanmış karmaşık başlıkla değil.

RFC 9111 önbellek davranışını tanımlar; tarayıcı ve yönetilen önbellekler operasyon denetimleri ekler. Yanıt saklanıp her kullanımda doğrulanabilir, belirli süre taze kalabilir veya hiç saklanmayabilir. Doğru politika URL'nin sürümlü olup olmadığına, gövdenin kişiselleştirilmesine ve kaynağın doğrulayıcı üretmesine bağlıdır.

Tazelik ve doğrulama farklı sorunları çözer

Taze yanıt kaynağa gitmeden kullanılabilir. Bayat yanıt ETag/If-None-Match veya Last-Modified/If-Modified-Since ile doğrulanıp değişmemişse 304 alabilir. Cache-Control: no-cache saklamaya izin verir fakat ilgili kullanımda yeniden kullanmadan doğrulama ister; no-store yanıtın saklanmamasını söyler. Adları kolayca yanlış yorumlanır.

Statik dosyayı umutla temizlemek yerine sürümleyin

Dosya URL'si içeriğiyle değişiyorsa, örneğin app.4f3a.js, uzun tazelik ve immutable kullanılabilir. Yeni dağıtım yeni URL'yi gösterirken eski belge eski dosyayı yükleyebilir. İçeriği aynı URL altında değişen HTML'e bunu uygulamayın; istemci tazelik bitene kadar eski sayfayı korur.

Kişiselleştirilmiş yanıtı koruyun

Private, yanıtı paylaşılan ara önbellek yerine özel önbelleğe yönlendirir; şifreli veya gizli anlamına gelmez. Kimlik doğrulanmış HTML ve API için çerez, yetkilendirme ve anahtar açıkça incelenmelidir. Vary temsili seçen istek başlıklarını bildirir; çok çeşitli başlıklarda kullanmak önbelleği parçalayabilir ve uygulama kimliğini yine kaçırabilir.

İstek dizisinin tamamını doğrulayın

İlk yanıtı, tazeyken tekrarı ve zorunlu ya da doğal doğrulama sonrasını inceleyin. Age, Cache-Control, ETag, Last-Modified, Vary ve durumu kaydedin. Anonim ve giriş yapılmış durumu ayrı deneyin. CDN temizliği HTTP'nin tanımladığı genel silme yöntemi değil ürün operasyonudur; doğruluğu acil temizliğe bağlamayın.

Başlangıç önbellek matrisi

YanıtTipik başlangıçDoğrulama
Hash'li JS/CSS/görselpublic, uzun max-age, immutableBayt değişince URL değişir
Herkese açık HTMLno-cache ve doğrulayıcıDeğişmeyen temsilde 304 oluşur
Kısa ömürlü açık APIKısa tazelik ve doğrulayıcıPaylaşılan anahtar gerçek varyantı içerir
Kişiselleştirilmiş yanıtAnaliz sonrası private/no-cache veya no-storeKullanıcılar arasında paylaşım yoktur

Uygulama incelemesi

  1. Her yanıtı hedef kitle ve değişebilirliğe göre sınıflandırın.
  2. Her yanıt için açık politika verin.
  3. Yararlı yerde doğrulayıcı kullanın.
  4. Vary'ı gerçek temsil boyutlarıyla sınırlayın.
  5. Tarayıcı, CDN ve kaynak sınırlarında istek dizisini test edin.

Örnekler 4 Eylül 2026'da RFC 9111 ve MDN'e göre gözden geçirildi. Bunları politika deseni sayın; kullanılan tarayıcı, çatı ve yönetilen önbelleğin gerçek davranışını ayrıca doğrulayın.

Kaynaklar

İlgili yazılar