这是我的控制器方法。任何人都可以解释我如何在服务器上为以下方法编写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);
}
谢谢
答案 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
属性值,因为您需要不同参数的不同结果。