為什麼 cURL 比 wget 慢

為什麼 cURL 比 wget 慢

測試頁面:https://www.beobank.be/nl/Home.aspx

這是使用 wget (或真實瀏覽器)的結果:

# time wget https://www.beobank.be/nl/Home.aspx -O /dev/null
--2015-01-26 12:05:46--  https://www.beobank.be/nl/Home.aspx
Resolving www.beobank.be (www.beobank.be)... 62.213.211.94
Connecting to www.beobank.be (www.beobank.be)|62.213.211.94|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 33444 (33K) [text/html]
Saving to: `/dev/null'

100%[======================================================================================================================================================>] 33,444      --.-K/s   in 0.05s   

2015-01-26 12:05:47 (670 KB/s) - `/dev/null' saved [33444/33444]


real    0m1.327s
user    0m1.072s
sys     0m0.060s

這是使用curl 的結果:

# time curl https://www.beobank.be/nl/Home.aspx &>/dev/null

real    1m0.741s
user    0m0.012s
sys     0m0.012s

OS X 似乎沒有這個問題(cURL 很快)。據我測試,這只發生在 Linux 上。所有機器(我已經嘗試過幾台)都是基於 Debian 的(運行最新軟體)並且啟用了 IPv6,但網站沒有 IPv6 記錄。所有測試都超過 1 分鐘——這似乎有些東西超時了?

向 Google 發出的請求速度很快:

# time curl https://www.google.com/ &>/dev/null

real    0m0.550s
user    0m0.020s
sys     0m0.012s

將“-4”參數添加到 cURL 以強制使用 IPv4 似乎不會改變任何內容。

可能是什麼原因?

答案1

在連接埠 53 UDP 上使用tcpdump,以便檢查當您在第二個標籤中透過 CURL 和 wget 取得網站時連接如何運作。

通常的原因是由於 IPv4/IPv6 衝突引起的,可以透過在 sysctl 中停用 IPv6 或在/etc/resolv.conf.

相關內容