计算ASP.NET页面上的加载时间

时间:2009-09-30 18:06:21

标签: .net asp.net

说,我想计算加载ASP.NET页面所需的时间。当用户键入URL并按Enter键时,会发生以下事件:

  1. 请求被发送到服务器
  2. 服务器处理请求,执行任何加载服务器端逻辑,进行数据库调用
  3. 浏览器接收响应,下载HTML和JS文件
  4. 浏览器运行客户端逻辑(加载Javascript函数)
  5. 浏览器呈现页面
  6. 如果我想衡量每项操作的时间,我的理解是我可以使用以下工具:

    1. 对于(1),使用Fiddler计算网络上的时间
    2. 对于(2),打开跟踪以计算服务器端处理的时间
    3. 对于(3),使用Fiddler计算下载时间
    4. 对于(4),使用firebug来获取JS函数所花费的时间
    5. 总结1到4给出了总时间。

      我的想法是否正确?是否有一个工具可以完成所有这些工作?是否有更简单的方法

5 个答案:

答案 0 :(得分:4)

Firebug实际上会在“网络”选项卡中为您提供1和3,并提供漂亮的小分割图形条,向您显示响应时间的组成部分(DNS查找,查询服务器,等待第一个字节) ,下载时间)。

由于服务器代码在服务器上运行,客户端代码在客户端上运行,因此实际上没有一个工具可以同时执行客户端和服务器测量。您可以简单地通过从总计中减去所有其他时间来近似,但最准确的服务器结果确实来自服务器本身。

答案 1 :(得分:1)

FireFox有一个插件支持这种需求:

Google Page Speed - 此工具可让您实时记录网络活动,然后查看请求的每个部分。它们需要多长时间以及哪些组件并行运行。

此外,如果您希望优化页面,YSlow可以提供其他建议,但它不会为您提供您要求的具体数据。

答案 2 :(得分:1)

对于第2点,

global.asax

中的

Private sw As Stopwatch = Nothing
Private Sub Global_asax_BeginRequest(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.BeginRequest
    sw = Stopwatch.StartNew
End Sub

Private Sub Global_asax_EndRequest(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.EndRequest
    If sw IsNot Nothing Then
        sw.Stop()
        Response.Write("<b>took " & sw.Elapsed.TotalSeconds.ToString("0.#######") & " seconds to generate this page</b>")
    End If
End Sub

答案 3 :(得分:0)

Visual Round Trip Analyzer是一个很好的程序,它使用NetMon计算您的步骤#1,2和&amp; 3.它可以告诉您网络需要多长时间以及服务器上的处理时间。

步骤#4很难,因为不同的浏览器会开始以不同的时间显示内容。

答案 4 :(得分:0)

为什么不直接在.NET中使用浏览器控件并创建自己的应用来测试从初始请求到最终响应所需的时间?