【问题标题】:Get Time to first byte from API Groovy从 API Groovy 获取第一个字节的时间
【发布时间】:2021-06-30 13:09:37
【问题描述】:

我正在编写一个脚本来获取 URL 的 TTFB。此 getResponseCode 方法为我提供了 URL 的状态代码。建立连接后,我可以使用什么方法或公式来获取 TTFB?

HttpURLConnection 连接

    try {
        
            URL url = new URL('www.xyx.com')
            connection = (HttpURLConnection)url.openConnection()
            connection.setRequestMethod("GET")
            connection.connect()

            println(connection.getResponseCode())
        
    }
    catch(Exception ex) {
        return 0
    }
    finally {
        connection.disconnect()
                    } 
    

【问题讨论】:

  • 你到底不知道什么?如何测量时间?或者如何从流中获取第一个字节?
  • 如何使用程序获得 TTFB?我可以在 chrome devtools 中看到 TTFB,但我希望它作为我程序的输出。连接库中有方法吗?
  • 标准 java.net 包中没有这样的方法。
  • 我可以计算是使用现有方法还是以某种方式从 devtools 中获取?

标签: api groovy katalon time-to-first-byte


【解决方案1】:

显而易见的方法

long t0 = System.getTimeMillis()
connection.getInputStream()?.read()
long t1 = System.getTimeMillis()

long ttfb = t1 - t0

但是我不确定准确性...

【讨论】:

  • 检索流 (getInputStream()) 可能不应该在计时器内完成。空检查也是如此。
  • 也许你是对的。我会将它包装到 @CompileStatic 中以最大程度地减少动态常规延迟。
  • “我会将它包装到 @CompileStatic 中,以最大限度地减少动态常规延迟。” - 如果你这样做了,我仍然认为调用getInputStream() 并在计时器开始之前进行任何空值检查是有意义的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-21
相关资源
最近更新 更多