有什么方法可以使用 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/