Медленная загрузка первой страницы - ASP.NET MVC

Я использовал минипрофилер для своей страницы, потому что я думаю, что у меня большое время загрузки моей первой страницы и некоторых других страниц. Я начинаю с miniprofiler, но я думаю, что это очень хороший инструмент. У меня есть этот результат:

  • http://localhost:50783/ 192.2 +0.0
    • Getting articles from database 2.2 +186.9
    • Находка: Индекс 866,4 +190,9
    • Render : Index 1839.0 +1058.1
      • Find: _Article 530.0 +2809.0
      • Частичный рендеринг: _Статья 64.3 +3339.2
      • Частичный рендеринг: _Статья 8.2 +3404.2
      • Частичный рендеринг: _Статья 12.5 +3413.0
      • Частичный рендеринг: _Статья 8.7 +3426.2
      • Частичный рендеринг: _Статья 7.9 +3435.4
      • Частичный рендеринг: _LeftMenu 64,8 +3520,4
      • Частичный рендеринг: _LogOnPartial 3.3 +3556.3
      • Частичный рендеринг: _RightMenuTest 2530,1 +3591,2
      • Частичный рендеринг: _NextMatch 3.5 +4088.7
      • Частичный рендеринг: _Standings 4.7 +4226.5
      • Частичный рендеринг: _Footer 21.2 +6137.4

Может ли кто-нибудь помочь мне сократить время, когда находится Find? Что это значит? Я знаю, что RightMenuTest занимает больше всего времени, и я тоже пытаюсь его сократить. У меня много собственных помощников, и я думаю, что это проблема с частичным просмотром _RightMenuTest. Поэтому мне нужна помощь в сокращении этого времени.

Спасибо

Отредактировано:

_Статья:

@model SkMoravanSvitavka.Models.Article
<h3>@Html.ActionLink(Model.Title, "Zobrazit", "Clanek", new { id = Model.ArticleID }, null)</h3>

    <p>@Html.Raw(Html.ArticleImageToSmall(Html.Article(Model.Text))) </p>

@Html.ActionLink("Počet komentářů:" + Model.Comments.Count, "Zobrazit", "Clanek", new { id = Model.ArticleID }, null)

Просмотр индекса для статьи:

@model IEnumerable<SkMoravanSvitavka.Models.Article>
@{
    ViewBag.Title = "Sk Moravan Svitávka - oficiální stránky fotbalového klubu";
}
@if (Model != null)
{
    foreach (var item in Model)
    {
        @Html.Partial("_Article", item);
    }
}

Индекс в контроллере для статьи:

public ActionResult Index()
        {
            var profiler = MiniProfiler.Current;
            using (profiler.Step("Getting articles from database"))
            {
                var model = repo.GetLatestArticles(5);
                return View(model);
            }
        }

person Libor Zapletal    schedule 17.07.2012    source источник
comment
Я добавил некоторый код, но я не уверен, что именно вам нужно, поэтому надеюсь, что это поможет, или если вы скажете, какой из них я могу добавить.   -  person Libor Zapletal    schedule 17.07.2012
comment
Это первое использование любого запроса EF в вашем приложении? В таком случае вы сталкиваетесь с созданием представлений EF.   -  person Ladislav Mrnka    schedule 17.07.2012


Ответы (2)


Попробуйте использовать RenderPartial вместо Partial:

foreach (var item in Model)
{
    Html.RenderPartial("_Article", item);
}
person Marian Ban    schedule 17.07.2012
comment
Почему RenderPartial лучше, чем Partial? - person jrummell; 17.07.2012
comment
@jrummell Это быстрее, потому что результат будет записан непосредственно в поток ответов во время выполнения. - person Marian Ban; 18.07.2012

Обязательно выполняйте тесты, когда проект компилируется в режиме Release. Известно, что ASP MVC выполняет дополнительное отражение для поиска представлений в режиме отладки для более полных возможностей отладки.

person Dmitry S.    schedule 17.07.2012