- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
这是我的:
[OutputCache(Duration = 3600, VaryByParam = "model")]
public object Hrs(ReportFilterModel model) {
var result = GetFromDatabase(model);
return result;
}
我希望它为每个不同的模型缓存一个新结果。目前它正在缓存第一个结果,即使模型发生变化,它也会返回相同的结果。
我什至试图覆盖 ReportFilterModel 的 ToString
和 GetHashCode
方法。实际上,我有更多属性要用于生成唯一的 HashCode
或 String
。
public override string ToString() {
return SiteId.ToString();
}
public override int GetHashCode() {
return SiteId;
}
有什么建议吗,我怎样才能让复杂的对象与 OutputCache
一起工作?
最佳答案
来自 MSDN 的 VaryByParam 值:以分号分隔的字符串列表,对应于 GET 方法的查询字符串值或 POST 方法的参数值。
如果您想通过所有参数值改变输出缓存,请将属性设置为星号 (*)。
另一种方法是创建 OutputCacheAttribute 的子类和用户反射以创建 VaryByParam 字符串。像这样:
public class OutputCacheComplex : OutputCacheAttribute
{
public OutputCacheComplex(Type type)
{
PropertyInfo[] properties = type.GetProperties();
VaryByParam = string.Join(";", properties.Select(p => p.Name).ToList());
Duration = 3600;
}
}
在 Controller 中:
[OutputCacheComplex(typeof (ReportFilterModel))]
关于c# - ASP NET MVC OutputCache VaryByParam 复杂对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30395376/
在什么情况下我们应该使用 Query-Strings (VaryByParam) 来实现 ASP.NET 中的缓存? 在 Web 应用程序的情况下,任何人都可以举出一个真实情况的例子吗? 最佳答案 P
在 ASP.NET MVC2 中,我使用 OutputCache 和 VaryByParam 属性。我使用单个参数就可以正常工作,但是当方法上有多个参数时,正确的语法是什么? [OutputCache
我有一个 WCF Web 服务的端点,它没有在 AJAX 请求的性能监视器中获取输出缓存命中,它确实为端点的非 AJAX 请求获取输出缓存。 网络配置:
ResponseCache 在某种程度上是 OutputCache 的替代品;但是,我想做服务器端缓存以及每个参数输入。 根据一些答案here和 here ,我应该使用 IMemoryCache 或
我在 MVC 5 中使用 OutputCache 来缓存服务器上的 View 。 我只想根据查询字符串中的两个参数缓存一个 View 。 操作方法 [HttpGet] [OutputCache(Loc
webforms 中的 outputcaching VaryByParams 是否理解路由参数?这样,如果我有一个类似于 "Content/{filename}/{more}" 的路由,我可以执行 V
我有这样的操作: [OutputCache(Duration = 3600, Location = OutputCacheLocation.ServerAndClient, VaryByPar
当我在处理缓存时,有类似的东西 VaryByParam 在页面指令中。那这是什么?谁能给我解释一下? 最佳答案 引用自MSDN documentation : A semicolon-separate
在我的 asp.net mvc 项目中,我在 Controller 上启用输出缓存,如下所示 [OutputCache(Duration = 100, VaryByParam = "*", VaryB
我正在为所有 Umbraco v4 页面使用输出缓存,但希望避免任何 Ajax 调用使用此类缓存... 我在default.aspx中添加了这一行: 然后,在 web.config 中:
这是我的: [OutputCache(Duration = 3600, VaryByParam = "model")] public object Hrs(ReportFilterModel mode
我正在尝试使用 ASP.NET MVC 3 中可用的新部分页面缓存。在我看来,我正在使用: 调用 Controller 方法: [Authorize] [OutputCache(Duration =
我正在尝试使用 VaryByParam 和 VaryByHeader 进行一些缓存。当 AJAX 请求进来时,我返回部分 XHTML。当收到常规请求时,我会发送带有页眉/页脚的部分 XHTML 页面。
我在 MVC 中执行了此操作 [OutputCache(Duration = 1200, VaryByParam = "*")] public ActionResult FilterArea( str
在没有输入参数的 ActionResult 方法上应用 OutputCache 属性后,我遇到了上述错误消息 - 为什么在这种情况下我会使用 VaryByParams?这是 ASP.Net MVC 中
我是一名优秀的程序员,十分优秀!