2016-01-12 69 views
3

我已閱讀本http://madskristensen.net/post/add-expires-header-for-imageshttps://technet.microsoft.com/en-us/library/cc770661.aspx和其他類似的文章,誰建議把這個如何爲ASP.NET MVC Web應用程序中使用的圖像添加緩存?

<staticContent> 
<clientCache httpExpires="Sun, 29 Mar 2020 00:00:00 GMT" cacheControlMode="UseExpires" /> 
</staticContent> 

但即使這些圖像是不是從高速緩存和200 OK響應獲取的是送的,那就是在一個請求服務器製成。我不想要x時間/天的請求,因爲這些圖片很長一段時間都不會改變。

我該怎麼做?

回答

2

下面的配置應該引起瀏覽器緩存您的圖片在整個一年:

<staticContent> 
    <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00" /> 
</staticContent> 
<httpProtocol> 
    <customHeaders> 
     <add name="Cache-Control" value="public" /> 
    </customHeaders> 
</httpProtocol> 

你只需要確保你的圖像正在充當靜態文件類型。沒有辦法強制瀏覽器不向服務器發送請求,即;用戶執行一個新鮮事。

你可以用在定位節點上面的配置,以便隻影響圖像的該網站在某個路徑:

<location path="Content"> 
      <system.webServer> 
       <staticContent> 
       <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00" /> 
       </staticContent> 
       <httpProtocol> 
       <customHeaders> 
        <add name="Cache-Control" value="public" /> 
       </customHeaders> 
       </httpProtocol> 
      </system.webServer> 
    </location> 

上述配置會添加一個HTTP緩存頭指令在http://www.example.com/Content/Images/託管的所有圖片*

您應該創建一個可配置的appsetting,將其作爲查詢字符串參數傳遞給這樣的圖像URI。這將允許你清除所有的客戶端從服務器發送請求的圖像:(我們要控制這個作爲高速緩存圖像可能會有問題)

<img src="/Content/Images/MyImage.jpg?version=<%# Global.ImageVersion %>" /> 

更多關於緩存頭(緩存控制)這裏http://www.mobify.com/blog/beginners-guide-to-http-cache-headers/

我希望有幫助!

相關問題