2009-11-22 22 views
3

我們正在ASP.NET中創建一個大型安全後臺Web應用程序。對網站的所有訪問都是通過https連接進行的,我們希望關閉頁面緩存或設置緩存快速過期。通過https選擇性緩存.js和.png文件?

但是,該網站使用了不少圖片和大型JavaScript文件/庫。有沒有辦法選擇性地緩存某些文件或文件類型,以免它們一直重新加載?

+0

http://stackoverflow.com/questions/1355129/http-what-are-the-best-headers-for-rarely-changed-images – 2009-11-22 07:41:58

回答

0

後一些額外的谷歌搜索,它看起來像我可能只需要創建一個web.config在我的腳本和圖像文件夾(以及任何其他我想緩存):

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
    <staticContent> 
     <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" /> 
    </staticContent> 
    </system.webServer> 
</configuration> 

這個問題似乎對不對?我錯過了什麼?

+1

這大概可以在HTTP上正常工作,但對HTTPS沒有影響嗎?使用Fiddler我可以看到每次訪問JS文件時,即使使用上面的web.config在我的腳本文件夾中也會重新獲取它們。 – MarkD 2010-03-15 09:25:17

0

請看排序標題:

  • 截止日期:星期一,2009年11月23日7時三十分00秒GMT
  • 緩存控制:公衆,最大年齡= 86400

您應該閱讀或瀏覽Caching in HTTP

使用ASP.NET MVC,您將需要用OutputCacheAttribute裝飾您的控制器操作。例如:

[OutputCache(Duration = 24*60*60)] // Cached for 1 day 
public ActionResult Index() { return View(); } 

在ASP.NET中,你可以在你的aspx文件使用OutputCache指令:

<%@ OutputCache Duration="86400" %> 
+1

我們正在爲aspx文件做這件事。我們正試圖緩存圖像並僅包含javascript文件(但不包括aspx文件本身)。 – 2009-11-22 07:57:36

+0

然後根據需要在您的網絡服務器上設置這些標頭。你在用什麼? IIS? Apache的? – 2009-11-22 08:11:07

+0

IIS ...我想我剛剛通過Google找到了相同的答案......在這裏發佈了答案,不知道我是否錯過了一些東西。 – 2009-11-22 08:12:30

0

您需要使用「far future expire」模式。在不使用輸出緩存的情況下,你可以這樣做。 (我個人認爲這看起來比輸出緩存更好。)

HttpContext.Response.ExpiresAbsolute = DateTime.Now.AddYears(5); 

當然,您可以將DateTime更改爲任何您想要的。