Работает ли подстановка кэша в ASP.NET MVC 2? - PullRequest
4 голосов
/ 02 февраля 2010

После обновления приложения с 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 ]

3 голосов
/ 12 декабря 2011

Немного поздно, но замена кэша вывода доступна в Moth , который предлагает поддержку как MVC 2, так и MVC 3.

2 голосов
/ 07 февраля 2010

Это спецификация, написанная в примечании к выпуску.

Вспомогательный метод Html.Substitute в MVC Futures больше не доступен

Из-за изменений в рендеринге поведение двигателей просмотра MVC, Html.Substitute вспомогательный метод не работа и была удалена.

0 голосов
/ 21 января 2015

Это также немного поздно, но я работаю над созданием библиотеки, которая могла бы вернуть замещение после кэширования обратно в Asp.Net MVC с производительностью в качестве основной проблемы. На одном из сайтов, которые я поддерживаю, можно отобразить кэшированную страницу с примерно 20 сложными заменами за 6-10 мс.

Мы откладывали обновление большинства наших проектов после MVC 1 из-за того, что замена после кэширования сломалась после MVC 2. Я работал над этим, чтобы позволить нам обновить базу, на которой построен наш код.

Если кто-то все еще ищет обходной путь для этой проблемы, не стесняйтесь проверить мой MvcSupplantCaching проект! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...