2010-02-02 65 views
4

將應用程序從ASP.NET MVC 1升級到ASP.NET MVC 2後,RC高速緩存替換已停止工作。緩存替代在ASP.NET MVC 2中工作嗎?

這是我的行動:

[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

有點晚了,但輸出緩存替代可在Moth,它提供了兩種MVC 2和MVC 3

2

這是規範,寫在發行說明。

在MVC期貨Html.Substitute helper方法不再

由於MVC視圖引擎的渲染 行爲的變化, Html.Substitute助手方法不 工作已被刪除。

+1

謝謝。我已經讀過。我預計即使Html.Substitute不再可用,我也可以使用另一種解決方案達到相同的效果。 – 2010-02-08 11:14:12

+0

這是最終的迴應嗎? – 2010-03-12 11:02:44

+0

對此有何更新?備用解決方案? – 2010-06-20 02:04:00

0

這也有點晚了支持,但我一直在努力開發庫,可以將後期緩存替換帶回到Asp.Net MVC,並將性能作爲主要關注點。它能夠在我保持的大約6ms到10ms的一個站點上提供大約20個左右複雜替換的輸出緩存頁面。

我們一直在拖延升級我們的大部分項目過去的MVC 1,因爲post cache的替代已經超過了MVC 2。我一直在研究這個問題,以允許我們升級基於我們的代碼的基礎。

如果有人仍在尋找解決此問題的解決方法,請隨時查看我的MvcSupplantCaching項目! :)