1
当我在action方法上使用outputcaching时,它被完整的url缓存,我想要做的是缓存页面,但忽略url的某些部分。在Global.asax中定义使用Outputcache忽略url值
定制路线:
routes.MapRoute(
"Template",
"Report/{reportid}/{reportname}/Template/{templateid}/{action}",
new { controller = "Template", action = "Index" }
);
我的模板控制器
public class TemplateController : Controller
{
[OutputCache(Duration=60*60*2)]
public ActionResult Index(Template template)
{
/* some code */
}
}
例如,当我去到以下网址:
http://mywebsite.com/Report/789/cacheme/Template/5
- >缓存根据网址提供2小时
http://mywebsite.com/Report/777/anothercacheme/Template/5
- >也被缓存基于该URL2小时
我想的是,的OutputCache忽略REPORTNAME和reportid值所以,当我去到上述网址的则返回相同缓存版本。这是可能的OutputCache属性或将我必须编写我的自定义OutputCache FilterAttribute?
也许,方式之一可能是使REPORTNAME,reportid作为参数的方法,然后用'VaryByParam'只templateid。除此之外,自定义筛选器属性将成为您的选择! – VinayC 2011-04-14 08:40:05
我试过了,但它仍然会为请求的模板返回不同的缓存版本 – 2011-04-14 10:06:48