2012-05-12 21 views
1

在Page_Load方法我的母版頁,我有這樣一行:asp.net緩存CSS和腳本,但不是頁面

Response.Cache.SetCacheability(HttpCacheability.NoCache); 

基本上,我不想緩存的頁面。我想要緩存.js和.css文件,但是當我重新加載頁面時,這些文件不會從瀏覽器緩存中加載,而是重新加載。

我需要解決什麼問題?

謝謝。

+0

你有阿帕奇?自從完成webdev以來,已經很長時間了,並且不確定它是否與asp兼容。 – 2012-05-12 14:09:31

+0

我不認爲js和css文件會受到母版頁中代碼的影響,因爲這些文件是靜態內容,而不是asp.net動態頁面。 –

+0

@allentranks:當我查看Chrome網絡標籤時,我發現從緩存中重新加載的唯一文件是jquery(它是從谷歌CDN加載的)。所有其他人都從我的服務器上重新加載。 – frenchie

回答

3

在HTML中的ASP頁面添加這些線路元部分

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE"> 
<META HTTP-EQUIV="EXPIRES" CONTENT="0"> 
<META HTTP-EQUIV="PRAGMA" content="NO-CACHE"> 

// Stop Caching in IE 
Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache); 

// Stop Caching in Firefox 
Response.Cache.SetNoStore(); 

這篇文章可能是有用的,以解決您的問題

http://www.codeproject.com/Articles/11225/Disabling-browser-s-back-functionality-on-sign-out

附:如果它沒有幫助。你可以像這樣使用作弊:<%=在這裏你應該添加一些隨機數例如Ticks%> - 添加它不應該被緩存的元素。 例如:

<link rel=stylesheet href="main.css?<%= ... %>"> 
2

您需要爲靜態資源(.js和.css)文件設置緩存。這不是默認啓用的。

請參閱本SO回答更多的細節:https://stackoverflow.com/a/2196848/69868

還要注意的是,當您重裝使用F5/Ctrl + F5鍵的頁面,有些瀏覽器會忽略緩存的指示,他們將永遠取新鮮的內容(例如火狐和Ctrl + F5)。如果你想測試緩存,重新加載頁面,重新輸入位置文本框中的URL。