在MVC中使用输出缓存作为对象参数

时间:2012-07-23 15:38:05

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-2 outputcache

这是我的控制器方法。任何人都可以解释我如何在服务器上为以下方法编写outputcache。

    public JsonResult GetCenterByStateCityName(string name, string state, string city, bool sportOnly, bool rvpOnly)
    {
        var result = GetCenterServiceClient().GetCentersByLocation(name, city, state, sportOnly, rvpOnly).OrderBy(c => c.Name).ToList();
        return Json(result);
    }

谢谢

2 个答案:

答案 0 :(得分:5)

你看过文件了吗?

http://msdn.microsoft.com/en-us/library/system.web.mvc.outputcacheattribute.aspx

简而言之,只需在动作上设置属性

即可
[OutputCache(CacheProfile = "SaveContactProfile", Duration = 10)]
public JsonResult SaveContact(Contact contact)
{
    var result = GetContactServiceClient().SaveContact(contact);
    return Json(result);
}

- 更新 -

如果你通过jQuery进行直接的Ajax调用,可以根据“cache”参数忽略OutPutCache - 默认情况下设置为true。

例如,如果您执行以下操作,则会忽略您的参数:

$.ajax({
    url: someUrlVar,
    cache: true, /* this is true by default */
    success : function(data) {

    }
});

只需要查看一下,因为您可以通过两种方式缓存该调用。

参考:

答案 1 :(得分:3)

[OutputCache(Duration = 3600, VaryByParam = "name;state;city;sportOnly;rvpOnly")]
public JsonResult GetCenterByStateCityName(string name, string state, string city, bool sportOnly, bool rvpOnly)
{
        var result = GetCenterServiceClient().GetCentersByLocation(name, city, state, sportOnly, rvpOnly).OrderBy(c => c.Name).ToList();
        return Json(result);
}

此处Duration值为3600秒。缓存有效期为1小时。您需要提供VaryByParam属性值,因为您需要不同参数的不同结果。