2010-10-01 64 views
1

我使用的OutputCache在这样的一个动作:问题与ASP.NET的MVC 2.0缓存

[OutputCache(Duration = 14400, VaryByParam = "none")] 
public ContentResult Catalog() 
{ 
return ...; 
} 

在Global.asax.cs中我的RegisterRoutes函数包含路线:

routes.MapRoute(
    "XMLRoute", // Route name 
    "{site}/catalog.xml", // URL with parameters 
    new { controller = "Home", action = "Catalog" } // Parameter defaults 
); 

的航线图网址喜欢:

  • example.com/site1/catalog.xml
  • 例子。 COM /站点2 /的catalog.xml
  • example.com/whatever/catalog.xml

到目录行动。

我认为预期的结果是在每个参数传递第一个请求后返回静态内容,但内容没有正确缓存。 我应该修改目录操作以使用参数,然后指定VarybyParam =“none”,并在MapRoute函数中添加一个带有UrlParameter.Optional的参数,或者还有其他事情在这里进行?

+0

你能否详细说明“内容没有被正确缓存”?你看到了什么结果,以及它们与你的期望有什么不同? – bzlm 2010-10-01 09:26:10

+0

对不起,我应该更清楚一点。我的意思是内容不从高速缓存中检索,它为每个请求重新创建。 – gmakrygiannis 2010-10-01 10:55:21

回答

0

多的试验和错误之后,我发现,最好的方法是使用:

[OutputCache(Duration = 14400, VaryByParam = "*")] 

而且使用重定向,以便使用缺省值和缓存的内容显示提供的参数。