2015-11-30 97 views
2

我有這個內容文件夾來保存js/images/css等不經常更改。所以,我添加了一個配置文件到該目錄,看起來像這樣 -Web.Config - staticContent - clientCache配置

<configuration> 
    <system.webServer> 
     <staticContent> 
      <!-- <clientCache cacheControlMode="UseExpires" httpExpires="Mon, 30 Nov 2015 20:45:45 GMT"/> --> 
      <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="1.00:00:00"/> 
     </staticContent> 
    </system.webServer> 
</configuration>  

當我加載頁面的第一次,我可以看到這些響應/請求頭所請求的js文件 -

Response Headers 
    Accept-Ranges:bytes 
    Cache-Control:max-age=86400 
    Content-Encoding:gzip 
    Content-Length:1730 
    Content-Type:application/x-javascript 
    Date:Mon, 30 Nov 2015 12:14:31 GMT 
    ETag:"038394f8fd11:0" 
    Last-Modified:Mon, 26 Oct 2015 14:14:08 GMT 
    Server:Microsoft-IIS/7.5 
    Vary:Accept-Encoding 
    X-Powered-By:ASP.NET 
Request Headers 
    Accept:*/* 
    Accept-Encoding:gzip, deflate, sdch 
    Accept-Language:en-US,en;q=0.8 
    Cache-Control:no-cache 
    Connection:keep-alive 
    Host:dev.admin.ccmportal.williamslea.com 
    Pragma:no-cache 
    Referer:http://dev.admin.ccmportal.williamslea.com/ 
    User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36 

兩個問題 -

  1. 當我使用F5重新加載頁面,我看到了同樣的響應頭用1730爲什麼 內容長度即使我已將 設爲緩存1天,內容也會重新加載?
  2. Cache-Control:請求標頭中的no-cache意味着什麼?

謝謝!

回答

1
  1. Content-Length將始終顯示內容長度,即使內容是從緩存中提取的。
  2. Cache-Control: no-cache告訴瀏覽器它應該向源服務器轉發請求,即使它有一個被請求的緩存副本。

內容長度規格:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13

的Cache-Control規格:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9

因此,它看起來像你的clientCache配置工作正常但是它也像你的瀏覽器不使用緩存根據緩存控制:no-cache

您的開發工具或類似的東西是否禁用了緩存?

+0

嗨,謝謝你的回覆。我使用的是Chrome,當我查看開發工具 - Elements選項卡下的設置時,我可以看到緩存未被禁用。所以,在我的理解緩存應該發生。我是否需要在爲此請求提供服務的IIS中進行一些配置更改? – iniki

+0

您的服務器看起來正在響應正確的標頭,請參閱「Cache-Control:max-age = 86400」,它告訴客戶將響應緩存24小時。響應頭文件中沒有任何內容會阻止緩存。 – timothyclifford