2009-09-30 58 views
2

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

  1. 请求被发送到服务器
  2. 服务器处理请求,执行任何负载的服务器端逻辑,使DB调用
  3. 浏览器接收
  4. 浏览器上运行的客户端逻辑(上负载Javascript函数)
  5. 浏览器呈现页面
响应,下载HTML和JS文件

如果我想衡量对各操作的时间,我的理解是,我可以使用以下工具:

  1. 对于(1),使用Fiddler在网络
  2. 计算时间对于(2),接通跟踪以计算时间为服务器侧处理
  3. 对于(3),使用Fiddler计算采取下载
  4. 的时间为(4),使用萤火虫用于通过JS功能所花费的时间

总结1到4给出总共花费的时间。

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

回答

4

Firebug实际上会给你1和3以及“净”选项卡,并提供了很好的小分裂图形条,显示响应时间的组成部分(DNS查找,查询服务器,等待第一个字节,下载时间)。

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

+0

尽管服务器端代码在服务器上运行,因为客户端仍在等待,而这种情况正在发生,为什么不能我们在客户端捕获这个? – Nick 2009-09-30 18:14:24

+0

客户端确实将其捕获,作为响应时间的一部分。但是,这也考虑到流量必须经过的每个网络跳跃以及读取时间(TTFB,TTLB),所以它不会像服务器的计算那样准确,这可以启动计时器为只要请求是接收方,并在写入输出之前立即停止。 – womp 2009-09-30 18:17:27

+0

那么,可以肯定地说响应时间包括步骤1,2,3? – Nick 2009-09-30 18:21:24

0

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

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

1

有firefox的插件,支持这方面的需求:

Google Page Speed - 这个工具可以让你记录Web活动现场,然后查看请求的每个部分。他们需要多长时间以及哪些组件并行运行。

此外,如果您正在寻找优化页面,YSlow可以提供其他建议,但它不会提供您要求的特定数据。

+0

谷歌网页速度还需要FireBug – Nirlep 2009-09-30 18:16:59

+0

YSlow是否覆盖了步骤1,2,3,4? – Nick 2009-09-30 18:23:01

+0

我不好的YSlow只是一个有用的优化工具,它并没有告诉你真正的往返请求时间。谷歌网页速度确实显示了这一点,这对确定真正的瓶颈在哪里非常有帮助。 – 2009-09-30 21:57:52

0

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

0

对于点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 
+0

这个假设是单个用户......如果你每秒有80个请求,那该怎么办...... – 2010-01-10 18:53:22

+0

@mrHinsh,这是他问的问题 – Fredou 2010-01-10 20:12:26