JK.*_*JK. 5 c# asp.net-mvc profiling mvc-mini-profiler asp.net-mvc-4
Miniprofiler告诉我,我的页面中最慢的部分是"渲染"步骤(下面附带截图).
渲染步骤中发生了什么?是将.aspx转换为html发送给客户端的阶段吗?有什么地方我可以添加Miniprofiler.Current.Step(),看看它为什么慢?
该应用程序是.NET4.5上的MVC4,带有.aspx渲染引擎.

编辑:
控制器动作只是标准的MVC内容:
public ActionResult Index()
{
ViewData["foo"] = GetFoo();
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
ASPX视图是基本的东西,如:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<p><% ViewData["foo"] %></p>
<% Html.RenderPartial("Something", Model) %>
</asp:Content>
Run Code Online (Sandbox Code Playgroud)
首先,ViewResult当您调用方法时会生成一个对象View()。
这看起来像
return View( Model );
Run Code Online (Sandbox Code Playgroud)
ExecuteResult()接下来,当在对象中调用该方法时,就会发生渲染步骤ViewResult;生成发送到客户端浏览器的HTML文档。
ExecuteResult() 方法(渲染)过程涉及:
ViewBag。Partials最后一部分,渲染您的Partials,就像创建ViewResult对象的递归版本。执行PartialView()、 RenderPartialView()或Action()方法来创建PartialViewResult对象。这个新的结果对象还具有ExecuteResult()生成 HTML“子文档”以与“父” HTML文档合并的方法。
如果部分视图有一个与之关联的子操作(控制器方法),则部分视图渲染需要更长的时间,因为它承担了实例化另一个控制器的负担......
您使用 2 个部分视图;渲染部分视图的时间总计为 37.1 毫秒中的 16.1 毫秒(总时间的 43%)。
关于 ASPX 视图引擎的注意事项:
我敢打赌,aspx引擎渲染视图的时间比Razor引擎要长。aspx引擎
综上所述:
与路由引擎分辨率(4.5 毫秒)和控制器实例化(7.3 毫秒)相比,渲染视图 ( ExecuteResult()) 可能相当耗时。
就您而言,渲染部分视图和父视图的时间似乎很长。但我还没有使用迷你分析器来检查自己。
可能是您的ASPX视图引擎效率太低,或者您可能有与正在进行大量数据库调用的部分相关的子操作...