2011-12-05 53 views
6

我不知道我在做什麼錯,但儘管我已經嘗試了一切,但我似乎無法讓客戶端緩存我的靜態資源。定義的客戶端緩存似乎被忽略

在我的web.config,我已經添加了以下項:

<staticContent> 
    <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" /> 
    </staticContent> 

根據文檔,這應該一個響應頭髮送到客戶端瀏覽器,讓它知道我們要保持靜態內容緩存30天。

如果我使用fiddler來查看客戶端正在接收什麼,它看起來像我的web.config添加被完全忽略。

下面是什麼提琴手是報告:

Cache-Control: no-cache 
Date: Mon, 05 Dec 2011 14:09:44 GMT 
Expires: -1 
Pragma: no-cache 
Vary: Accept-Encoding 

我沒有在IIS任何頭重寫此所以我不知道它是什麼,我的思念。任何幫助將不勝感激。

回答

6

我破解了這個,但它花了一段時間。你試圖從服務器強制304s(沒有改變)。它與IIS版本不同。

它具有所有你在一個目錄 靜態內容最好地實現(例如content所以你必須/content/css/content/js etc

然後你只需要確保目錄不會過期下的一切,比如說,30天。

IIS7

容易得多。最簡單的方法 - 將web.config添加到上面提到的內容目錄。這web.config將剛纔的到期指令:

<system.webServer> 
    <staticContent> 
     <clientCache 
      cacheControlMaxAge="30.00:00:00" 
      cacheControlMode="UseMaxAge" /> 
    </staticContent> 
</system.webServer> 

IIS6

你需要操縱元數據庫。它不是IIS6中的XML,請按照此處的說明進行操作:IIS6 ETags metabase commands

我們使用上述和簡單查看螢火蟲顯示304s。

+0

首先,感謝您的幫助。我確實在上面指出了304s,但在內容文件夾中添加web.config並沒有什麼不同。我已經嘗試將新的web.config添加到/ Content文件夾,並最終得到500個錯誤(_正在尋找資源,並且無法顯示_)。我也將它移動到資源所在的文件夾:/ Content/css,現在成功檢索了css文件,但是再次使用no-cache標頭。 – Yag

+0

看起來像這可能會幫助http://stackoverflow.com/questions/5385714/deploying-website-500-internal-server-error路由也許.... – penderi