2008-12-11 62 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