为“动态”内容启用客户端缓存(asp.net mvc 3.0)

时间:2011-04-27 17:31:47

标签: caching asp.net-mvc-3 iis-7

上下文:ASP.NET MVC 3.0,.NET 4.0,C#,IIS 7

我有很长的名单(游戏领域/服务器)。领域存储在数据库中 我有一个Action,它将列表作为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%。

2 个答案:

答案 0 :(得分:4)

  

如何将此.js文件缓存到客户端?

通过使用[OutputCache]属性修饰操作,将其缓存在服务器上会更可靠。如果要将其缓存在客户端上,则可以在使用此属性时在客户端上配置缓存缓存位置,该属性将发送正确的Cache-Control HTTP响应头:

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

答案 1 :(得分:1)

如果你必须在客户端缓存,你有一些选择......

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