【发布时间】:2011-07-05 21:37:07
【问题描述】:
我正在尝试使用 ASP.NET MVC 3 中可用的新部分页面缓存。在我看来,我正在使用:
<% Html.RenderAction("RenderContent", Model); %>
调用控制器方法:
[Authorize]
[OutputCache(Duration = 6000, VaryByParam = "*", VaryByCustom = "browser")]
public ActionResult RenderContent(Content content)
{
return PartialView(content);
}
请注意,原始视图和局部视图都使用相同的视图模型。
问题是VaryByParam 不起作用 - 无论传递给它的视图模型是什么,RenderContent() 总是返回相同的缓存 HTML。 VaryByParam 有什么我不明白的地方吗?
【问题讨论】:
-
调用动作方法是如何装饰的,缓存方式?此外,VaryByParam 与传递给操作方法的模型无关 - 它与浏览器发送的参数(查询字符串、表单等)有关 - 到调用操作方法,在这种情况。
-
调用动作方法没有指定缓存。
-
@bzlm,部分页面缓存确实与输入参数有关,与查询字符串/表单字段无关。请参阅weblogs.asp.net/scottgu/archive/2010/12/10/…,输出缓存改进部分。
-
@Jappie 你是对的。好东西!但是,从技术上讲,“当您在操作方法上有显式参数时自动更改输出缓存条目”即使对于使用 GET 的正常操作的 ASP.NET MVC 1 也是如此。 (不过还是要
VaryByParam。)
标签: c# asp.net-mvc caching asp.net-mvc-3