asp.net-mvc - ASP.NET MVC 缓存因 Controller 操作参数而异

标签 asp.net-mvc caching outputcache

有什么方法可以使用 outputcache 通过 Controller 操作参数来改变缓存属性?我们有 varybyparam如果我的参数以 REST 方式嵌入到 URL 中,这将不起作用。

最佳答案

在 Action 方法中实现“VaryByParam”并不意味着“通过传递给该操作方法的参数而变化”也很重要。它的意思是“因传递到作为 HTTP 参数的操作方法的参数而异”。

[OutputCache(CacheProfile = "ContentPage", VaryByParam = "mode")]
public ActionResult Index(string key, string mode)
{

}

假设此操作方法的路线是:
  routes.MapRoute(
   "video-route-short",
   "video/{key}",
   new { controller = "Video", action = "Index", key = (string)null }
  );

正如 Craig 上面所说,关键参数是 URL 的一部分,因此缓存不适用于它 - 所以它基本上总是被缓存。

将通过' ?mode=1 发送的模式参数' 类型将应用于缓存。

关于asp.net-mvc - ASP.NET MVC 缓存因 Controller 操作参数而异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/361301/

相关文章:

asp.net-mvc - 仅在 ASP.NET MVC 站点的一部分中将操作过滤器应用于每个 Controller ?

asp.net - 将 Entity Framework 与大型数据库(600+ 实体)一起使用时内存不足

jquery - 如何用jQuery调用平板电脑的键盘?

javascript - Apache Mod 过期了,如何调试?

iphone - AFNetworking 检查图像是否被缓存

c# - webforms 中的输出缓存 varybyparams 是否理解路由参数?

c# - 自定义 OutputCache 提供程序在 Add() 和 Set() 上生成不同的键

asp.net-mvc - 如何对类似于 "using(Html.BeginForm()){ }"的 HtmlHelper 进行单元测试

java - 用于部署 Web 应用程序的 Infinispan 独特缓存管理器

asp.net-mvc - ASP.NET MVC - 在客户端缓存页面