Asp.net mvc ASP.NET MVC缓存因控制器操作参数而异
是否有任何方法可以通过使用属性的控制器操作参数改变缓存?如果我的参数以REST方式嵌入到URL中,那么我们有一种方法将不起作用。默认情况下,缓存是以这种方式工作的。不同的URL提供不同的缓存位置。也许您的问题中缺少了一些东西,但是,如上所述,它已经以这种方式工作。在操作方法中认识到“VaryByParam”并不意味着“通过传递到该操作方法中的参数而变化”,这一点也很重要。它的意思是“根据传递到作为HTTP参数发起的操作方法中的参数而变化”Asp.net mvc ASP.NET MVC缓存因控制器操作参数而异,asp.net-mvc,caching,outputcache,Asp.net Mvc,Caching,Outputcache,是否有任何方法可以通过使用属性的控制器操作参数改变缓存?如果我的参数以REST方式嵌入到URL中,那么我们有一种方法将不起作用。默认情况下,缓存是以这种方式工作的。不同的URL提供不同的缓存位置。也许您的问题中缺少了一些东西,但是,如上所述,它已经以这种方式工作。在操作方法中认识到“VaryByParam”并不意味着“通过传递到该操作方法中的参数而变化”,这一点也很重要。它的意思是“根据传递到作为HTTP参数发起的操作方法中的参数而变化” [OutputCache(CacheProfile =
[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”类型发送的模式参数将应用于缓存。从MVC3开始,情况不再如此