缓存替换是否在ASP.NET MVC 2中有效?

时间:2010-02-02 12:46:10

标签: asp.net-mvc caching

将应用程序从ASP.NET MVC 1升级到ASP.NET MVC 2后,RC缓存替换已停止工作。

这是我的行动:

 [OutputCache(Duration = 30, VaryByParam = "none")]
 public ActionResult CacheTest1()
 {
      return View("CacheTest");
 }

这是替补扩展名:

public static object Substitute(this HtmlHelper html, MvcCacheCallback cb)
{
    html.ViewContext.HttpContext.Response.WriteSubstitution(
        c => cb(new HttpContextWrapper(c)));
    return null;
}

这是我的观点:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>CacheTest</title>
</head>
<body>
    <div>
    Date: <%=DateTime.Now.ToString() %>
    Substitute: <%=Html.Substitute(c => DateTime.Now.ToString()) %>
    Response.WriteSubstitution: <% Response.WriteSubstitution(c => DateTime.Now.ToString()); %>
    </div>
</body>
</html>

页面缓存一分钟并且替换不起作用,它只显示最初呈现页面的时间。那是在ASP.NET MVC 1.0中工作的!!

有什么想法吗?

由于

3 个答案:

答案 0 :(得分:3)

有点晚了,但Moth提供了输出缓存替换,它支持MVC 2和MVC 3.

答案 1 :(得分:2)

这是规范,以发行说明编写。

  

MVC Futures中的Html.Substitute辅助方法不再可用

     

由于渲染的变化   MVC视图引擎的行为,   Html.Substitute辅助方法没有   工作并已被删除。

答案 2 :(得分:0)

这也有点晚了,但我一直在努力开发一个可以将后缓存替换带回Asp.Net MVC的库,其性能是主要关注点。它能够在我保持的大约6ms到10ms的其中一个站点上渲染一个输出缓存页面大约20个左右的复杂替换。

由于后缓存替换突破MVC 2,我们一直推迟升级我们的大部分项目超过MVC 1.我一直在努力让我们升级基础,我们的代码建立在

如果有人仍在为此问题寻找解决方法,请随时查看我的MvcSupplantCaching项目! :)