2012-02-13 46 views
3

我的圖像存儲在azure blob存儲中,並使用我的天藍色CDN通過我的Web應用程序引用。但是所有圖像都會返回一個304響應標題。理想情況下,我不希望瀏覽器返回CDN以檢查每個請求的有效性,而是讓瀏覽器始終使用緩存。 - 在圖像緩存的生命週期中。304在Azure Blob存儲中託管的Azure CDN圖像的狀態碼

由於我對緩存的知識有限,我知道緩存使用ETag值來比較圖像版本是否與請求時相同。在這種情況下,CDN會返回304響應。但是,因爲CacheControl標頭設置爲公共,max-age = 2592000我希望瀏覽器使用圖像的緩存副本。我有另一個CDN安裝程序,它有一個託管服務端點,它返回200響應,因爲我刪除了ETag值。

任何幫助,這將不勝感激。

+0

很少有問題。你的意思是'max-age'而不是'max-set'?響應中是否還有Expires標題?我們在這裏談論什麼瀏覽器? – brettw 2012-02-13 05:02:35

+0

確實意味着最大年齡。過期頭不是在響應中,並與即時通訊工作與firefox的Firefox。 – Christo 2012-02-13 05:32:10

回答

1

ETag「觸發器」304響應=>瀏覽器已發送If-None-Match驗證請求到服務器。這通常在max-age已經過去之後完成。你會發現這個在這裏一個很好的說明:

https://stackoverflow.com/a/500103/2550808

還值得一提的是,Firefox瀏覽器的設置應設置爲默認值:去about:config頁面,選中該設置:http://kb.mozillazine.org/Browser.cache.check_doc_frequency

讓我們回到對於你的問題,服務器返回到瀏覽器的Cache-Control頭可能有問題。在我微薄的個人經驗我沒有遇到明確public版本的頭的,那將是更可能只是這個:

Cache-Control: max-age=3600, must-revalidate 

無論如何,這裏是屬於緩存頭的不錯描述:

https://www.mnot.net/cache_docs/

另外,可能還有其他原因不斷重新驗證考慮:

  • 在服務器的變化。2頭00對文件的響應可能會影響緩存;
  • JavaScript調用重新加載位置對象,爲bReloadSource傳遞TRUE;