2011-10-10 49 views
4

頭我們有一個相當高容量IIS7.0網站(約100萬個請求,每天),其中很多是圖像/ CSS/JS。設置「過期Web內容的」共同HTTP響應在IIS

作爲一種快速的方法來減少這一點,我在考慮設置常見的HTTP響應頭過期的網頁內容在將來的某個固定日期的方式,並且想知道什麼可能的弊端,我們可以不用它。

望着從設定由此產生的web.config中的變化,它增加了:

<staticContent> 
    <clientCache cacheControlMode="UseExpires" cacheControlMaxAge="1.00:00:00" httpExpires="Thu, 01 Oct 2020 00:00:00 GMT" /> 
</staticContent> 

我擔心的是,如果我們想改變CSS/JS /圖像之一設置此之後,客戶止跌」不管怎麼樣,圖像可能不會改變,CSS/JS當然會。這是否意味着我們應該只設置這對含圖像的文件夾?或者這是否意味着我們需要爲我們的CSS/JS引入版本化的URL?

回答

5

你應該總是緩存靜態內容(圖片,CSS,JS)

緩存即使大多數瀏覽器仍然會禮貌地詢問服務器作爲一個較新的版本是否可用(If-Modified-Since)和服務器將會回覆未修改。 (例如,IE默認爲「自動檢查新版本的頁面」)

一個警告:如果您的服務器和客戶端之間有其他代理服務器,則這些代理服務器可能會選擇嚴格遵守緩存設置, '陳舊'的內容,因此您需要將一些想法應用於緩存的最佳持續時間。

+0

謝謝。所以,如果現代瀏覽器無論如何都要問,那麼設置靜態內容在未來會以何種方式實際上還有什麼好處呢?我所能看到的只是您指出代理的可能缺點。 – Kram

+0

AFAIK即使緩存時間到期時,服務器會知道的內容是否已經改變(因爲瀏覽器IF-Modified-Since的),並仍然會返回Not Modified和通過不服務內容節省帶寬,所以你應該得到通過緩存幾個小時,大部分好處。但使用像Fiddler這樣的工具只是爲了安全起見。 – StuartLC

+0

在Chrome和IE9上進行檢查時,它們似乎都可以在打開或關閉緩存時起作用。也許它與舊的瀏覽器/代理有關,但我看不出現代瀏覽器有什麼不同。猜測我可以把它翻過來,然後「看」,但我希望能有比這更清晰的東西。 – Kram

相關問題