Curl 查看網頁載入前的各項時間'

有時我們會需要網頁載入前詳細的時間來判斷問題的所在,正時可以用 Curl 加上 -w 的方式輸出訊息 (此文為 win 環境)

1
curl -o null -w %{time_namelookup}::%{time_connect}::%{time_starttransfer}::%{time_total}::%{speed_download} "https://www.google.com"
參數 說明
-o 把curl 返回的html、js 寫到黑洞[null](Linux 請用 /dev/null
-s 去掉所有狀態
-w 按照後面的格式輸出
-L 跟隨網址重導向

以下以加上說明的命令做範例:

curl -o null -w " Time_namelookup:%{time_namelookup}:\n TCP_Connect time:%{time_connect}\n SSL_Connect time:%{time_appconnect}\n Redirect time:%{time_redirect}\n Pretransfer:%{time_pretransfer}\n Starttransfer:%{time_starttransfer}\n time_total:%{time_total}\n speed_download:%{speed_download}" https://www.google.com
1
2
3
4
5
6
7
8
9
10
11
12
13
curl -o null -w " time_namelookup:%{time_namelookup}\n TCP_Connect time:%{time_connect}\
n SSL_connect time:%{time_appconnect}\n Redirect time:%{time_redirect}\n Pretransfer:%{time_pretransfer}\n Starttransfer:%{time_starttransfer}\n time_total:%{time_total}\n speed_download:%{speed_download}" https://www.google.com
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 11115 0 11115 0 0 88920 0 --:--:-- --:--:-- --:--:-- 88920
Time_namelookup:0.031000
TCP_Connect time:0.046000
SSL_Connect time:0.078000
Redirect time:0.000000
Pretransfer:0.078000
Starttransfer:0.125000
time_total:0.126000
speed_download:89008.000
名稱 數值 說明,單位都是
Time_namelookup 0.031000 DNS 解析域名[www.google.com]的時間
TCP_Connect time 0.046000 client和server端建立TCP 連接的時間
SSL_Connect time 0.078000 SSL/SSH 等上層協議建立連接的時間,比如 connect/handshake 的時間
Redirect time 0.000000 從開始到最後一個請求事務的時間
Pretransfer 0.078000 從請求開始到響應開始傳輸的時間
Starttransfer 0.125000 從client發出請求到web的server 響應第一個字節的時間
time_total 0.126000 client發出請求;到web的server發送會所有的相應數據的時間
speed_download 89008.000度 下載速度 單位 byte/s
  1. 建立 TCP 連接到 server 返回 client 第一個字節的時間:0.125s - 0.046s = 0.079s
  2. Server 把響應數據發送給 client 的時間:0.125s - 0.126 = 0.001s

或者是把以下內容存成 curl-format.txt

1
2
3
4
5
6
7
8
9
10
\n
time_namelookup: %{time_namelookup}\n
time_connect: %{time_connect}\n
time_appconnect: %{time_appconnect}\n
time_redirect: %{time_redirect}\n
time_pretransfer: %{time_pretransfer}\n
time_starttransfer: %{time_starttransfer}\n
----------\n
time_total: %{time_total}\n
\n

指令-w "@路徑/curl-format.txt" -o null -s https://www.google.com

curl -w "@D:\curl-format.txt" -o null -s https://www.google.com
------ THE END ------