2011-05-04 13 views
9

Geçerli bir biçimde biçimlendirilmiş HTTP yanıtı "Süresi dolmuş" başlıkları gönderiyorum (örneğin "Çar, 04 Mayıs 2011 09:29:09 GMT") response.setDateHeader("Expires", {milliseconds a few seconds in the future}) kullanarak, bir J2EE uygulamasından https: // [host]: {port}/([host] localhost ile) aracılığıyla sunuldu.HTTP Chrome'un HTTP "Expires" üstbilgisini tanımladığımda önbelleğe alınmış sayfaları neden kullanmıyor

Sayfalarımda aynı sayfaya bağlantı var. Bu bağlantıyı Firefox (4) veya IE (8) içinden tıkladığımda, Süresi dolma zamanına ulaşılana kadar sayfa önbellekten yeniden yüklenir. Süresi dolan zaman geçtikten sonra, aynı bağlantıyı tıklamak, sunucudan yeni verilerle yüklenen sayfa ile sonuçlanır. Belirtilen tarayıcılardan birinde F5'e basarsam, sayfa sunucudan yeni verilerle yeniden yüklenir (Firebug bana Cache-Control: max-age=0'un istekle birlikte gönderildiğini gösterir).

Google Chrome ile hem F5 hem de bağlantıyı tıklamak aynı etkiye sahiptir. Sayfa, DAİMA sunucudan yeni verilerle yeniden yüklenir.

Bu etkinin iyi belgelenmiş bir açıklamasını bulamadık.

Durumumda neden Google Chrome'un, sunucunun sayfa yanıtlarıyla birlikte gönderdiği "Süresi dolmuş" üstbilgileri ve dolayısıyla verileri sunucudan isteyen DAİMA'lara uymadığını biliyor mu?

cevap

7

Krom, bu bağlamda çalışma şekli aşırı karışıklığa neden olabilir. F5'e veya "bu sayfayı yeniden yükle" seçeneğine basmak, kromun önbellekten bir istek göndermesini önler. Bu, her iki durumda da (herhangi bir yere gönderilmez) istek üstbilgisinde Cache-Control: max-age = 0 olmasına rağmen, önbellek kullanacağı url penceresindeki enter tuşuna basmakla kolayca karşılaştırılabilir.

ctrl + F5 tuşlarına basarsanız, Cache-Control: no-cache. F5 & ctrl + F5 arasındaki farkın her ikisinin de sunucuya gönderilen bir istekle sonuçlanması gerektiğine inanıyorum, ancak ctrl + F5 durumunda sunucu değiştirilmemiş bir 304 ile yanıt vermemesi gerektiğini bilmelidir.

İlgili konular