【问题标题】:Using Output Cache in MVC for Object Parameter在 MVC 中为对象参数使用输出缓存
【发布时间】:2012-07-23 15:38:05
【问题描述】:

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

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

谢谢

【问题讨论】:

  • 你想缓存一个 POST 方法?
  • 是的,我想要一个 POST 方法的缓存

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


【解决方案1】:

您看过文档吗?

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) {

    }
});

您可以通过两种方式缓存调用。

参考:

【讨论】:

【解决方案2】:
[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 属性值,因为您希望不同参数的不同结果。

【讨论】:

  • VaryByParam = "*" 是否适用于如果名称或状态发生更改,则不会从以前缓存的结果中获取的情况,对吗?
猜你喜欢
  • 2015-07-25
  • 2014-08-28
  • 2015-09-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-04
  • 2014-02-13
  • 2010-10-12
  • 2011-01-22
相关资源
最近更新 更多