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 連線後,以及完成 SSL 交握 (如果使用 HTTPS) 後的時間。如果是 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 都會傳回非空值。

傳回
Date?

java.util.Date,代表 DNS 查詢完成的時間。如果插座已重複使用 (請參閱 getSocketReused)。null

getDnsStart

abstract fun getDnsStart(): Date?

傳回 DNS 查詢開始時間。無論結果來自 DNS 伺服器或本機快取,這項作業和 getDnsEnd 都會傳回非空值。

傳回
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

這項要求是否重複使用先前要求中的通訊端。這時 DNS、連線和 SSL 時間會是 nulltrue

getSslEnd

abstract fun getSslEnd(): Date?

傳回 SSL 交握完成的時間。如果是 QUIC,這會與 getConnectEnd 的時間相同。

傳回
Date?

java.util.Date 代表 SSL 交握完成的時間。null (如果未使用 SSL 或重複使用通訊端,請參閱 getSocketReused)。

getSslStart

abstract fun getSslStart(): Date?

傳回 SSL 握手開始的時間。如果是 QUIC,這會與 getConnectStart 的時間相同。

傳回
Date?

java.util.Date,代表安全資料傳輸層 (SSL) 握手開始的時間。null (如果未使用 SSL 或重複使用通訊端,請參閱 getSocketReused)。

getTotalTimeMs

abstract fun getTotalTimeMs(): Long?

傳回要求啟動和完成之間的時間 (以毫秒為單位),包括失敗或取消,如果未收集到資料,則傳回 null。TODO(mgersh):Remove once new API works http://crbug.com/629194

getTtfbMs

abstract fun getTtfbMs(): Long?

傳回要求啟動和回應標頭的第一個位元組之間的時間 (以毫秒為單位),如果未收集這項資料,則傳回 null。TODO(mgersh):Remove once new API works http://crbug.com/629194