【问题标题】:Slow loading first page - ASP.NET MVC缓慢加载第一页 - ASP.NET MVC
【发布时间】:2012-07-16 04:19:13
【问题描述】:

我为我的页面使用了 miniprofiler,因为我认为我的第一页和其他一些页面的加载时间很长。我从 miniprofiler 开始,但我认为它是非常好的工具。我有这个结果:

  • http://localhost:50783/ 192.2 +0.0
    • 从数据库中获取文章 2.2 +186.9
    • 查找:索引 866.4 +190.9
    • 渲染:索引 1839.0 +1058.1
      • 查找:_Article 530.0 +2809.0
      • 部分渲染:_Article 64.3 +3339.2
      • 部分渲染:_Article 8.2 +3404.2
      • 部分渲染:_Article 12.5 +3413.0
      • 部分渲染:_Article 8.7 +3426.2
      • 部分渲染:_Article 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

任何人都可以帮助我减少查找在哪里的时间吗?这是什么意思?我知道 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);
            }
        }

【问题讨论】:

  • 我添加了一些代码,但我不确定哪些是您需要的,所以希望这些对您有所帮助,或者如果您说我可以添加哪一个。
  • 这是您的应用程序中首次使用任何 EF 查询吗?在这种情况下,您将面临 EF 视图的生成。

标签: asp.net-mvc-3 entity-framework ninject mvc-mini-profiler


【解决方案1】:

尝试使用 RenderPartial 代替 Partial:

foreach (var item in Model)
{
    Html.RenderPartial("_Article", item);
}

【讨论】:

  • 为什么RenderPartialPartial 好?
  • @jrummell 比较快,因为在执行过程中会直接将结果写入Response流。
【解决方案2】:

确保在项目以发布模式编译时也进行测试。众所周知,ASP MVC 会执行额外的反射以在调试模式下查找视图以获得更全面的调试功能。

【讨论】:

    猜你喜欢
    • 2011-01-07
    • 2014-02-04
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    • 2012-05-12
    • 2015-03-15
    相关资源
    最近更新 更多