MVC3 RenderPartial кэширование на нескольких страницах - PullRequest
7 голосов
/ 04 марта 2011

Может кто-нибудь сказать мне, если возможно кэшировать RenderPartial на нескольких страницах? У меня есть RenderPartial для профиля пользователя, который не должен изменяться, если только пользователь не обновит свой профиль. Поэтому я не хочу возвращаться и получать его / ее профиль каждый раз, когда загружаю страницу. Я бы предпочел пропустить партиал, пока я не буду вынужден обновить (т.е. обновить профиль)

Я посмотрел на DonutHole пример, который p.haack собрал, но, похоже, он уместен для одной страницы. Может ли кто-нибудь указать мне правильное направление или дать какой-нибудь совет? Или я могу кэшировать только одну страницу за раз? спасибо!

1 Ответ

11 голосов
/ 04 марта 2011

Вместо этого вы можете использовать RenderAction. Пример:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult About()
    {
        return View();
    }

    [OutputCache(Duration = 6000, VaryByParam = "none")]
    public ActionResult Cached()
    {
        // You could return whatever you want here, even a view
        // but for the purpose of the demonstration I am simply
        // returning a dynamic string value
        return Content(DateTime.Now.ToLongTimeString(), "text/html");
    }
}

и внутри представлений Index.cshtml и About.cshtml вы можете включить дочернее действие:

<div>
    @{Html.RenderAction("Cached");}
</div>

и вы получите его кэшированную версию на обеих страницах.

...