3

这是我的控制器方法。谁能解释我如何在服务器上为以下方法编写输出缓存。

    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);
    }

谢谢

4

2 回答 2

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 调用,则 OutPutCache 可以根据“cache”参数被忽略 - 默认情况下设置为 true。

例如,如果您正在执行以下操作,您的参数将被忽略:

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

    }
});

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

参考:

于 2012-07-23T15:40:50.637 回答
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属性值,因为您希望为不同的参数提供不同的结果。

于 2012-07-23T15:51:31.917 回答