2008-12-11 63 views

回答

5

缓存默认以这种方式工作。不同的URL会给出不同的缓存位置。也许你的问题中有一些缺失,但正如所述,它已经以这种方式工作。

10

在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 } 
); 

克雷格以上说的,关键参数是URL的一部分,因此缓存并不适用于它 - 所以它是基本上总是被缓存。

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

+0

从MVC3开始,这不再是这种情况[see](http://stackoverflow.com/questions/4518671/does-varybyparam-also-read-routedata-values) – felickz 2015-11-03 17:10:28