2011-04-27 88 views
1

語境:ASP.NET MVC 3.0,.NET 4.0,C#,IIS 7啓用 「動態」 的內容客戶端緩存(asp.net的MVC 3.0)

我有遊戲領域的名稱(一個長長的清單/服務器)。領域存儲在數據庫中。
我有一個操作,返回列表作爲JSON代碼。

我參考名單在我的.aspx如下:

<script type="text/javascript" src='<%= Url.Action("Realms", "Data") %>'></script> 

這裏是一個簡短的動作本身:

public ActionResult Realms() { 
     var realms = Data.GetRealms(...); 
     var json = JsonSerialize(realms); 
     return Content("realms = {0};".With(json), "text/javascript", Encoding.UTF8); 
    } 

這份名單變化很少(每月一次)。

問題:我該如何導致這個.js文件被緩存客戶端?

詳細信息 我的問題是,這個「文件」正在下載每個頁面刷新並佔流量的20%。

回答

4

我該如何將這個.js文件緩存在客戶端?

通過裝飾具有[OutputCache]屬性的動作,將其緩存在服務器上會更可靠。如果你希望緩存在客戶端上,你可以使用這個屬性,它會發送正確的Cache-Control HTTP響應頭時配置客戶端的緩存緩存位置:

[OutputCache(Location = OutputCacheLocation.Client, Duration = 20)] 
public ActionResult Realms() 
{ 
    ... 
} 
+0

後續問題:http://stackoverflow.com/questions/5809987/asp-net-mvc-how-do-i-return-304-not-modified-status – 2011-04-27 20:15:50

1

如果你必須你有一些客戶端緩存選項...

可能有更多的選擇,但這些是想到的。