2010-01-07 64 views
6

我不想將我的aspx頁面緩存在任何地方。出於某種原因,IE會忽略從我的母版頁設置meta標籤IIS7:爲所有aspx頁面設置「no-cache」,但不是圖像/ css/js

<meta http-equiv="Expires" CONTENT="0"> 
<meta http-equiv="Cache-Control" CONTENT="no-cache"> 
<meta http-equiv="Pragma" CONTENT="no-cache"> 

我想看看我是否可以將我的HTTP響應頭「緩存控制」 - 「無緩存」。設置類似

HttpContext.Current.Response.Headers.Add("Cache-Control", "no-cache"); 
    HttpContext.Current.Response.Headers.Add("Exipres", DateTime.Now.AddDays(-1).ToShortDateString()); 

在每個頁面上都會很痛苦。我想如果有反正我們可以在IIS7中設置此項(將此標題添加到aspx頁面,而不是圖像/ css/js)。可能嗎 ?

編輯:根據http://technet.microsoft.com/en-us/library/cc753133%28WS.10%29.aspx中的建議,添加自定義http響應標頭會將標頭添加到所有文件,包括js,css,圖像。因此,添加「緩存控制」,「無緩存」這裏沒有工作要麼

編輯2:我想增加一個httpmodule。類似於http://blogs.technet.com/stefan_gossner/archive/2008/03/12/iis-7-how-to-send-a-custom-server-http-header.aspx。有什麼建議麼 ?

回答

3

http://technet.microsoft.com/en-us/library/cc770661(WS.10).aspx

默認情況下,IIS只緩存靜態內容;如果它已經緩存了非靜態內容,則必須進行調整。

+0

我不希望它緩存的aspx,但希望它緩存(在客戶端)的圖片,CSS和JS。我想在IIS中添加響應頭,以便不*緩存aspx,而是緩存圖像,js,css – ram 2010-01-07 19:35:04

+0

默認情況下IIS不會緩存aspx - 這就是我所說的。如果它正在緩存aspx頁面,則必須檢查相同的設置以確保動態頁面的緩存處於禁用狀態。 – jvenema 2010-01-07 20:14:33

1

一個讓瀏覽器緩存頁面的絕對確定方法是將一個查詢字符串變量設置爲一個隨機數,因此您的鏈接總是以「?ran =」結尾。我過去在有限的基礎上完成了這項工作。

2

如果您使用的是母版爲您的網站,你可能需要考慮增加以下響應頭爲它的Page_Load事件:

protected void Page_Load(object sender, EventArgs e) 
{ 
Response.AddHeader("Cache-Control", "no-cache, no-store, max-age=0, must-revalidate"); 
} 

由於您的.js文件(S)將不使用母版,瀏覽器應該保存對其緩存的引用。

上面的例子是我使用的,它在Firefox3,IE7和Chrome7下運行良好。請注意,上面的響應頭是我爲緩存控制添加的唯一東西,它可以完成這項工作。但是,我經常在其他網站上看到PragmaExpires響應標頭。

例如,這裏是在Gmail中使用的響應報頭:

的Content-Type:text/html的;字符集= UTF-8
緩存控制:無緩存,無店鋪,最大年齡= 0,必重新驗證
雜注:無緩存
過期:週五,1990年01一月00:00:00 GMT

日期:星期二,2010 11月02日16時38分15秒GMT
X-DNS預取控制:關閉
內容編碼:gzip
傳輸編碼:分塊
X-內容類型 - 選項:nosniff
X框選項:SAMEORIGIN
X-XSS-保護:1;模式=塊
服務器:GSEServer:GSE

我不知道如果這些用於舊的瀏覽器和/或其他新的瀏覽器。

我傾向於實現最小數量的代碼來解決問題,而我從來沒有(上)指出的Response.AddHeader不足。