2011-04-27 127 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

如果你必须你有一些客户端缓存选项...

可能有更多的选择,但这些是想到的。