测量ASP.NET页面加载时间

Xpi*_*itO 15 asp.net

我目前正在开发一个使用a的ASP.NET应用程序,MasterPage我想测量我的应用程序webform的加载时间并将该信息显示给客户端.

我当前的策略涉及使用Application_BeginRequest事件关联回调(在Global.asax我的网站解决方案的文件中),开始测量服务器端进程所花费的时间(如下所示)

protected void Application_BeginRequest(Object sender, EventArgs e) {
   Context.Items.Add("Request_Start_Time", DateTime.Now);
}
Run Code Online (Sandbox Code Playgroud)

并计算webform OnPreRender事件关联回调的经过时间,将其打印在占位符元素上(如下所示)

protected override void OnPreRender(EventArgs e) {
   base.OnPreRender(e);

   TimeSpan tsDuration = DateTime.Now.Subtract((DateTime)Context.Items["Request_Start_Time"]);
   ExecutionTime.InnerHtml = "<em>Server-side processing duration: " + tsDuration.TotalMilliseconds + " miliseconds.</em>";
}
Run Code Online (Sandbox Code Playgroud)

这是衡量装载时间的最佳方法吗?是否有更"优雅"的方式来实现这一目标?

提前感谢您的时间和合作.

Erw*_*win 8

<%@ Page Trace ="true"%>(或在web.config中设置)

启用跟踪并查看trace.axd中的信息(位于您网站的根目录中).

然后你可以设置时间点:

Trace.Write("Start time intensive task");
Trace.Write("Stop time intensive task");
Run Code Online (Sandbox Code Playgroud)

http://msdn.microsoft.com/en-us/library/bb386420.aspx

这假设"您的客户"需要深度调试数据.


rea*_*idt 5

您的应用程序似乎足够精确,只要您不呈现非常大的控件树并且您不使用以重写Render方法完成所有工作的服务器控件即可(无经验的服务器控件作者往往会做到这一点……) 。

在这种情况下,实际上存在一种渲染实际渲染时间的方法;-)只需使用一个HttpResponse.Filter对象即可将经过的时间填充到占位符中。呈现Web表单之后和将其提交给客户端之前,将应用这些过滤器。

如果仅出于开发需要,请搜索trace.axd,这不仅为您提供了很多详细信息,而且还包括了请求上下文,控制树结构和页面大小。