cache-control
Başlık bir önbellek proxy bir yanıtın "tazelik" anlatmak için bir HTTP sunucusu için birincil mekanizmadır. (yani, yanıtın önbellekte nasıl / ne kadar süreyle saklanacağı)
Bazı durumlarda cache-control
direktifler yetersizdir. Burada, yalnızca dil ile değişen bir sayfayı açıklayan HTTP çalışma grubundan bir tartışma arşivlenmiştir . Bu, değişken başlığı için doğru kullanım durumu değildir , ancak bağlam, tartışmamız için değerlidir. (Bu durumda Vary başlığının sorunu çözeceğine inanmama rağmen, Daha İyi bir Yol var.) O sayfadan:
Vary
kesinlikle bir proxy'nin sunucunun yapacağını çoğaltmasının umutsuz veya aşırı derecede karmaşık olduğu durumlar içindir.
Yapmacık bir örnek:
HTTP sunucunuzun büyük bir açılış sayfası var. Kullanıcının daha önce orada bulunup bulunmadığına bağlı olarak, aynı URL'ye sahip biraz farklı iki sayfanız var. Çerezlere dayalı olarak istekleri ve bir kullanıcının "ziyaret sayısını" ayırt edersiniz. Ancak - sunucunuzun açılış sayfası çok büyük olduğu için, aracı proxy'lerin mümkünse yanıtı önbelleğe almasını istersiniz.
URL, Last-Modified ve Cache-Control üstbilgileri, bu bilgiyi bir önbelleğe alma proxy'sine vermek için yetersizdir, ancak eklerseniz Vary: Cookie
, önbellek motoru, önbelleğe alma kararlarına Çerez başlığını ekleyecektir.
Son olarak, küçük trafik için dinamik web siteleri - her zaman basit Cache-Control: no-cache, no-store
ve Pragma: no-cache
yeterli buldum .
Düzenle - sorunuzu daha kesin bir şekilde yanıtlamak için: HTTP istek başlığı 'Kabul Et', bir müşterinin işleyebileceği İçerik Türlerini tanımlar. Aynı URL'de aynı içeriğin yalnızca İçerik Türü bakımından farklılık gösteren iki kopyasına sahipseniz, kullanmak Vary: Accept
uygun olabilir.
Güncelleme 11 Eylül 12:
Bu yorumun orijinal olarak gönderilmesinden bu yana yorumlarda görünen birkaç bağlantı ekliyorum. Her ikisi de gerçek dünya örnekleri (ve sorunları) için Vary: Kabul Et; Eğer bu cevabı okuyorsanız, o linkleri de okumalısınız.
Birincisi, olağanüstü EricLaw'dan, Internet Explorer'ın Vary başlığıyla davranışına ve geliştiricilere sunduğu bazı zorluklardan: Vary Header, IE'de Önbelleğe Almayı Önler . Kısacası, IE (IE9 öncesi), istek önbelleği HTTP İstek başlıklarını içermediğinden, Vary başlığını kullanan herhangi bir içeriği önbelleğe almaz. EricLaw (gerçek dünyada Eric Lawrence), IE ekibinde bir Program Yöneticisidir.
İkincisi, Eran Medan'dan ve Chrome'da Vary ile ilgili beklenmedik davranışların devam eden bir tartışması: Destek, Vary başlığını doğru şekilde işlemez . Bu, IE'nin davranışıyla ilgilidir, ancak Chrome geliştiricileri farklı bir yaklaşım benimsemiştir - kasıtlı bir seçim gibi görünmese de.