理解延遲

延遲是指一資料包從源頭傳輸到目的地所需的時間。在效能最佳化方面,最佳化以減少延遲的原因非常重要,並且要透過模擬高延遲來測試網站效能,以最佳化連線質量較差的使用者體驗。本文將解釋什麼是延遲,它如何影響效能,如何測量延遲以及如何減少延遲。

什麼是延遲?

延遲通常是指使用者發出請求到響應返回給使用者所需的時間。在首次請求時,對於最初的 14KB 位元組,延遲會更長,因為它包括 DNS 查詢、TCP 握手和安全的 TLS 協商。後續請求的延遲會更短,因為與伺服器的連線已經建立。

延遲描述了網路或網際網路連線上的延遲量。低延遲意味著幾乎沒有延遲。高延遲意味著有很多延遲。提高效能的主要目標之一就是減少延遲。

單個資源的延遲,尤其是基本 HTML 頁面的延遲,可能看起來微不足道。但網站通常涉及多個請求:HTML 包含對多個 CSS、指令碼和媒體檔案的請求。這些請求的數量和大小越大,高延遲對使用者體驗的影響就越大。

在低延遲連線上,請求的資源幾乎會立即出現。在高延遲連線上,傳送請求到資源返回之間會有明顯的延遲。我們可以透過測量資料從一個網路位置移動到另一個網路位置的速度來確定延遲量。

延遲可以透過一種方式測量,例如,傳送資源請求所需的時間,或者從瀏覽器請求資源到請求的資源到達瀏覽器時的整個往返時長。

網路節流

要模擬低頻寬網路的延遲,您可以使用開發者工具並切換到較低端的網路連線。

Emulate latency by emulating throttling

在開發者工具的“網路”表中,您可以將“節流”選項切換到 2G、3G 等。不同的瀏覽器開發者工具有不同的預設選項,模擬的特徵包括下載速度、上傳速度和最小延遲(或傳送資料包所需的最小時間)。一些預設的近似值包括:

Selection 下載速度 上傳速度 最小延遲 (毫秒)
GPRS 50 kbps 20 kbps 500
普通 2G 250 kbps 50 kbps 300
良好的 2G 450 kbps 150 kbps 150
普通 3G 750 kbps 250 kbps 100
良好的 3G 1.5 Mbps 750 kbps 40
普通 4G/LTE 4 Mbps 3 Mbps 20
DSL 2 Mbps 1 Mbps 5
Wi-Fi 30 Mbps 15 Mbps 2

網路時序

此外,在“網路”選項卡中,您可以看到每個請求完成所需的時間。我們可以檢視一個 267.5KB 的 SVG 圖片資源花了多長時間下載。

The time it took for a large SVG asset to load.

當一個請求在佇列中等待網路連線時,它被認為是阻塞的。當透過 HTTP 對單個伺服器發出過多的併發連線時,就會發生阻塞。如果所有連線都已在使用中,瀏覽器就無法下載更多資源,直到連線被釋放,這意味著這些請求和資源被阻塞了。

DNS 解析是指進行 DNS 查詢所花費的時間。 主機名越多,需要進行的 DNS 查詢就越多。

連線是指完成 TCP 握手所需的時間。與 DNS 類似,所需的伺服器連線越多,花費在建立伺服器連線上的時間就越多。

TLS 握手是指建立安全連線所需的時間。雖然 TLS 握手比不安全的連線需要更長的連線時間,但安全連線所需的額外時間是值得的。

傳送是指將 HTTP 請求傳送到伺服器所需的時間。

等待是磁碟延遲,伺服器完成響應所需的時間。磁碟延遲曾經是效能關注的主要領域。然而,隨著計算機記憶體或 CPU 的改進,伺服器效能也得到了提高。根據伺服器所需功能的複雜性,這仍然可能是一個問題。

接收是指下載資源所需的時間。接收時間取決於網路容量和資原始檔大小的組合。如果圖片已經被快取,這將幾乎是瞬時的。如果我們進行了節流,接收時間可能長達 43 秒!

測量延遲

網路延遲是指從發出請求的計算機到響應的計算機之間的資料請求所需的時間。包括一個數據位元組從響應計算機返回到請求計算機所需的時間。通常測量為往返延遲。

磁碟延遲是指計算機(通常是伺服器)收到請求到計算機返回響應之間所需的時間。