RequestFinishedInfo.Metrics

abstract class RequestFinishedInfo.Metrics


为单个请求收集的指标。这些指标大多是请求生命周期内事件的时间戳,可用于构建详细的时间轴以调查性能。

事件按以下顺序发生:

  1. request start
  2. DNS start
  3. DNS end
  4. connect start
  5. SSL start
  6. SSL end
  7. connect end
  8. sending start
  9. sending end
  10. response start
  11. request end
开始时间报告为请求开始阻止事件的时间,而不是事件实际发生的时间,推送开始和结束时间除外。如果某个指标没有意义或不可用(包括请求在到达该阶段之前完成的情况),则开始时间和结束时间将为 null。如果没有花费任何时间来阻止事件,则开始时间和结束时间将相同。

如果在请求期间调整了系统时钟,则某些 java.util.Date 值可能与系统时钟不匹配。时间戳是使用保证不会向后运行的时钟记录的。所有时间戳相对于请求开始时的系统时钟都是正确的,并且计算两个时间戳之间的差值将给出事件之间的正确差值。为了保留此属性,除了请求开始之外的事件的时间戳不能保证与它们所代表的时间的系统时钟匹配。

大多数计时指标都取自 LoadTimingInfo,其中包含 的信息。

摘要

公共构造函数

公共函数

abstract Date?

返回连接建立完成的时间。

abstract Date?

返回连接建立开始的时间。

abstract Date?

返回 DNS 查找完成的时间。

abstract Date?

返回 DNS 查找开始的时间。

abstract Date?

返回收到 HTTP/2 服务器推送的最后一个字节的时间。

abstract Date?

返回收到 HTTP/2 服务器推送的第一个字节的时间。

abstract Long?

返回通过网络传输层收到的总字节数,如果未收集,则返回 null

abstract Date?

返回请求完成的时间。

abstract Date?

返回请求开始的时间。

abstract Date?

返回收到响应标头结束的时间。

abstract Date?

返回发送请求完成的时间。

abstract Date?

返回发送请求开始的时间。

abstract Long?

返回通过网络传输层发送的总字节数,如果未收集,则返回 null

abstract Boolean

返回套接字是否从之前的请求中重复使用。

abstract Date?

返回 SSL 握手完成的时间。

abstract Date?

返回 SSL 握手开始的时间。

abstract Long?

返回请求发起和完成之间的毫秒数,包括失败或取消,如果未收集,则返回 null

abstract Long?

返回请求发起和响应标头的第一个字节之间的毫秒数,如果未收集,则返回 null

公共构造函数

指标

Metrics()

公共函数

getConnectEnd

abstract fun getConnectEnd(): Date?

返回连接建立完成的时间。

返回
Date?

java.util.Date,表示连接建立完成的时间,即在建立 TCP 连接后(如果使用 HTTPS,则在完成 SSL 握手后)。对于 QUIC 0-RTT,这表示握手确认的时间,可能晚于 getSendingStart。如果套接字被重复使用(请参阅 getSocketReused),则返回 null

getConnectStart

abstract fun getConnectStart(): Date?

返回连接建立开始的时间。

返回
Date?

java.util.Date,表示连接建立开始的时间,通常是在 DNS 解析完成时。如果套接字被重复使用(请参阅 getSocketReused),则返回 null

getDnsEnd

abstract fun getDnsEnd(): Date?

返回 DNS 查找完成的时间。无论结果来自 DNS 服务器还是本地缓存,此函数和 getDnsStart 都会返回非 null 值。

返回
Date?

java.util.Date,表示 DNS 查找完成的时间。如果套接字被重复使用(请参阅 getSocketReused),则返回 null

getDnsStart

abstract fun getDnsStart(): Date?

返回 DNS 查找开始的时间。无论结果来自 DNS 服务器还是本地缓存,此函数和 getDnsEnd 都会返回非 null 值。

返回
Date?

java.util.Date,表示 DNS 查找开始的时间。如果套接字被重复使用(请参阅 getSocketReused),则返回 null

getPushEnd

abstract fun getPushEnd(): Date?

返回收到 HTTP/2 服务器推送的最后一个字节的时间。

返回
Date?

java.util.Date,表示收到 HTTP/2 服务器推送的最后一个字节的时间。如果未使用服务器推送,则返回 null

getPushStart

abstract fun getPushStart(): Date?

返回收到 HTTP/2 服务器推送的第一个字节的时间。

返回
Date?

java.util.Date,表示收到 HTTP/2 服务器推送的第一个字节的时间。如果未使用服务器推送,则返回 null

getReceivedByteCount

abstract fun getReceivedByteCount(): Long?

返回通过网络传输层收到的总字节数,如果未收集,则返回 null。字节数不包括任何之前的重定向。

getRequestEnd

abstract fun getRequestEnd(): Date?

返回请求完成的时间。

返回
Date?

java.util.Date,表示请求完成的时间。

getRequestStart

abstract fun getRequestStart(): Date?

返回请求开始的时间。

返回
Date?

java.util.Date,表示原生请求实际开始的时间。此时间戳将与它所代表的时间的系统时钟匹配。

getResponseStart

abstract fun getResponseStart(): Date?

返回收到响应标头结束的时间。

返回
Date?

java.util.Date,表示收到响应标头结束的时间。

getSendingEnd

abstract fun getSendingEnd(): Date?

返回发送请求完成的时间。

返回
Date?

java.util.Date,表示发送 HTTP 请求正文完成的时间。(发送请求标头后才会发送请求正文。)

getSendingStart

abstract fun getSendingStart(): Date?

返回发送请求开始的时间。

返回
Date?

java.util.Date,表示发送 HTTP 请求标头开始的时间。

getSentByteCount

abstract fun getSentByteCount(): Long?

返回通过网络传输层发送的总字节数,如果未收集,则返回 null

getSocketReused

abstract fun getSocketReused(): Boolean

返回套接字是否从之前的请求中重复使用。在 HTTP/2 或 QUIC 中,如果流在单个连接中进行多路复用,则对于第一个流之后的所有流,返回 true

返回
Boolean

此请求是否重复使用了之前请求中的套接字。如果为 true,则 DNS、连接和 SSL 时间将为 null

getSslEnd

abstract fun getSslEnd(): Date?

返回 SSL 握手完成的时间。对于 QUIC,这与 getConnectEnd 的时间相同。

返回
Date?

java.util.Date,表示 SSL 握手完成的时间。如果未使用 SSL 或套接字被重复使用(请参阅 getSocketReused),则返回 null

getSslStart

abstract fun getSslStart(): Date?

返回 SSL 握手开始的时间。对于 QUIC,这与 getConnectStart 的时间相同。

返回
Date?

java.util.Date,表示 SSL 握手开始的时间。如果未使用 SSL 或套接字被重复使用(请参阅 getSocketReused),则返回 null

getTotalTimeMs

abstract fun getTotalTimeMs(): Long?

返回请求发起和完成之间的毫秒数,包括失败或取消,如果未收集,则返回 null。TODO(mgersh):新 API 正常运行后移除 http://crbug.com/629194

getTtfbMs

abstract fun getTtfbMs(): Long?

返回请求发起和响应标头的第一个字节之间的毫秒数,如果未收集,则返回 null。TODO(mgersh):新 API 正常运行后移除 http://crbug.com/629194