【问题标题】:Calculating load time on a ASP.NET page计算 ASP.NET 页面上的加载时间
【发布时间】:2009-09-30 18:06:20
【问题描述】:

假设,我想计算加载 ASP.NET 页面所花费的时间。当用户输入 URL 并按下回车键时,会发生以下事件:

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

如果我想衡量每个操作所花费的时间,我的理解是我可以使用以下工具:

  1. 对于 (1),使用 Fiddler 计算网络时间
  2. 对于 (2),打开跟踪以计算服务器端处理的时间
  3. 对于(3),使用Fiddler计算下载时间
  4. 对于 (4),使用 firebug 计算 JS 函数所花费的时间

将 1 到 4 相加得出总时间。

我的想法对吗?有没有一种工具可以做到这一切?有没有更简单的方法

【问题讨论】:

    标签: .net asp.net


    【解决方案1】:

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

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

    【讨论】:

    • 虽然服务端代码是在服务端运行的,但是由于客户端还在等待,为什么不能在客户端捕获呢?
    • 客户端确实会捕获它,作为响应时间的一部分。但是,这也考虑到流量必须经过的每个网络跃点才能到达您,以及读取时间(TTFB,TTLB),因此它不会像服务器的计算那样准确,它可以启动一个计时器一旦请求是接收者,并在它写入输出之前停止它。
    • 那么,是否可以肯定地说响应时间涵盖了步骤 1、2、3?
    • 有点。响应时间涵盖总响应时间。其中 1% 可能是网络延迟与其他 99% 的服务器处理时间,或者相反。您的#2 最准确地由服务器上的跟踪给出。如果您实际上只对总响应时间感兴趣,那么是的,它涵盖了它。如果您对代码执行时间感兴趣,那么它并不能准确地涵盖它。
    • 优秀。所以,我想我可以抓住响应时间,加上 JS 的执行时间,我应该差不多被覆盖了。似乎 IE8 分析器没有“网络”选项卡。使用IE时有没有办法获取响应时间?
    【解决方案2】:

    对于第 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
    

    【讨论】:

    • @mrHinsh,他就是这么问的
    【解决方案3】:

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

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

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

    【讨论】:

    • 谷歌页面速度也需要 FireBug
    • YSlow 是否涵盖步骤 1、2、3、4?
    • My bad YSlow 只是一个有用的优化工具,它不会显示往返请求的真实时间。谷歌页面速度确实显示了这一点,它对于找出真正的瓶颈在哪里非常有帮助。
    【解决方案4】:

    Visual Round Trip Analyzer 是一个很好的程序,它使用 NetMon 计算您的步骤 #1、2 和 3。它可以告诉您网络花费了多少时间以及服务器上的处理时间。

    第 4 步比较难,因为不同的浏览器会在不同的时间开始显示内容。

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        猜你喜欢
        • 2012-12-29
        • 2020-01-23
        • 2011-11-07
        • 2011-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多