2

我已经用谷歌搜索,通过 SO 搜索,并阅读了主机页面上推荐的 Navigation Timing 页面,但无法自行解决。

:response_time,:time_to_first_byte和 和有什么区别:time_to_last_byte

根据我的理解,以及 Navigation Timing 文档,它似乎:response_time应该是 和 的总和:time_to_first_byte:time_to_last_byte但是在执行我的测试时我发现它不是。

    require 'watir-webdriver-performance'

    $response = $browser.performance.summary[:response_time]
    $first_byte = $browser.performance.summary[:time_to_first_byte]
    $last_byte = $browser.performance.summary[:time_to_last_byte]

    def performance_check
        puts ("#{$browser.url}: Response time: #{$response}ms.")

        puts ("#{$browser.url}: Time to first byte: #{$first_byte}ms.")

        puts ("#{$browser.url}: Time to last byte: #{$last_byte}ms.")
    end

    def test_site_01
      $browser.goto("http://www.google.com/")
      performance_check 
    end

我看到的典型输出是:

    http://www.google.com: Response time: 1558ms.
    http://www.google.com: Time to first byte: 384ms.
    http://www.google.com: Time to last byte: 385ms.

谢谢你。

4

1 回答 1

5

到第一个字节的时间 (TTFB) 是服务器在响应中返回第一个信息字节所用的时间。所以这个 gem 中的 TTFB 相当于:

response_start - domain_lookup_start if domain_lookup_start > 0

并将包括 DNS、连接和请求开销。

此 gem 中的最后一个字节时间 (TTLB) 相当于:

response_end - domain_lookup_start

所以应该包括 DNS、连接、请求和响应开销。

因此,在您的示例中,有效地在 TTFB 和 TTLB 之间传输内容只需要 1ms。摘要中的响应时间是散列中所有测量的最早和最新时间​​戳之间的增量。所以实际上是navigation_start 和load_end 之间的所有内容。

这包括规范中可用的所有 DNS、TCP、连接、请求、响应和浏览器处理/加载时间。

如果您只是转储哈希,则在您的代码中

$browser.performance.summary

您应该能够看到所有相关指标。

于 2012-12-04T21:10:47.890 回答