溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

curl獲取網(wǎng)站的響應(yīng)時(shí)間

發(fā)布時(shí)間:2020-04-15 00:02:34 來(lái)源:網(wǎng)絡(luò) 閱讀:231761 作者:雙魚座小龍 欄目:建站服務(wù)器

curl獲取網(wǎng)站的響應(yīng)時(shí)間




0.問(wèn)題


總有人反饋說(shuō)打開某個(gè)頁(yè)面比較慢,

但是他們并不清楚到底慢在哪里。

同樣的問(wèn)題,

在我們?cè)L問(wèn)外部業(yè)務(wù)的接口時(shí),

往往也是感覺很慢,

但就是不清楚慢在哪里。




1.分析


當(dāng)我們打開一個(gè)網(wǎng)頁(yè),

對(duì)于一個(gè)不需要考慮技術(shù)的人,

想象的畫面應(yīng)該是,

我們通過(guò)地址欄問(wèn)瀏覽器要個(gè)東西,

然后瀏覽器通過(guò)我們提供的地址去對(duì)應(yīng)的服務(wù)器取對(duì)應(yīng)的文件,

然后根據(jù)服務(wù)器的回應(yīng)將內(nèi)容顯示給我們。


從一個(gè)運(yùn)維人員的視角,

可能就不能這么簡(jiǎn)單粗暴地想象了,

否則可能永遠(yuǎn)也無(wú)法確認(rèn)問(wèn)題究竟出現(xiàn)在哪里了。

curl獲取網(wǎng)站的響應(yīng)時(shí)間



簡(jiǎn)單點(diǎn)來(lái)概括下,

1.當(dāng)我們打開瀏覽器,在地址欄輸入www.qq.com時(shí),

瀏覽器首先會(huì)根據(jù)瀏覽器緩存,電腦緩存,電腦hosts文件,DNS服務(wù)來(lái)解析www.qq.com對(duì)應(yīng)的網(wǎng)絡(luò)地址是多少,這個(gè)過(guò)程會(huì)根據(jù)解析地方的不同而耗時(shí)不同。


使用瀏覽器緩存和電腦緩存,

返回的結(jié)果是最快的,但是可能不是最新的,也可能是錯(cuò)誤的。

通過(guò)hosts文件解析域名的優(yōu)先級(jí)是高于DNS服務(wù)的解析的,

我們也可以在hosts中修改某些域名的解析結(jié)果。


2.瀏覽器獲得域名相應(yīng)IP后,開始與服務(wù)器進(jìn)行三次握手進(jìn)行連接。

3.瀏覽器與服務(wù)器建立連接后向其發(fā)起服務(wù)請(qǐng)求

4.服務(wù)器內(nèi)部處理完請(qǐng)求后,將處理結(jié)果發(fā)送給瀏覽器

5.瀏覽器解析服務(wù)器發(fā)送的結(jié)果,然后展示給用戶


curl獲取網(wǎng)站的響應(yīng)時(shí)間


上面簡(jiǎn)單描述了瀏覽器在與服務(wù)器進(jìn)行服務(wù)請(qǐng)求的過(guò)程,

其中任何一個(gè)環(huán)節(jié)耗時(shí)過(guò)久都將影響到用戶訪問(wèn)網(wǎng)站的速度。



2.Curl獲取相關(guān)數(shù)據(jù)


使用cur  -w/--write-out l獲取相關(guān)數(shù)據(jù)


幾個(gè)比較關(guān)鍵的參數(shù):


url_effective 最后獲取的URL。

http_code 上一次HTTP(S)或FTP(S)操作返回的響應(yīng)碼。在7.18.2版加入的response_code顯示同樣的信息。

http_connect 在最后一次對(duì)cURL的CONNECT請(qǐng)求的響應(yīng)(從代理)中發(fā)現(xiàn)的數(shù)值代碼。 (在7.12.4版加入)

time_total 全部操作耗費(fèi)的時(shí)間,單位為秒。精確到毫秒。

time_namelookup 從開始到域名解析完成耗費(fèi)的時(shí)間,單位為秒。

time_connect TCP連接遠(yuǎn)程主機(jī)(或代理服務(wù)器)所耗時(shí)間,單位為秒。

time_appconnect SSL/SSH/等與遠(yuǎn)程主機(jī)連接/握手完成花費(fèi)的時(shí)間,單位為秒。(在7.19.0 版加入)

time_pretransfer 從開始到文件將要傳輸前花費(fèi)的時(shí)間,單位為秒。包括指定的協(xié)議所有預(yù)傳輸命令和negotiations。

time_redirect 所有重定向步驟的時(shí)間,包域名解析、連接、預(yù)傳輸和最后事務(wù)開始前的傳輸,單位為秒。time_redirect顯示多重重定向的完整執(zhí)行時(shí)間。(在7.12.3版加入 )

time_starttransfer  從開始到第一個(gè)字節(jié)將被傳輸前耗費(fèi)的時(shí)間,單位為秒。

這包括time_pretransfer和服務(wù)器需要的運(yùn)算結(jié)果的時(shí)間。

size_download下載的總字節(jié)數(shù)。

size_upload上傳的總字節(jié)數(shù)。

size_header 下載的header的總字節(jié)數(shù)。

size_request 發(fā)送的HTTP請(qǐng)求的總字節(jié)數(shù)。

speed_download curl成功下載的平均下載速度。

speed_upload curl成功上傳的平均上傳速度。





3.獲取請(qǐng)求的耗時(shí)信息



針對(duì)特定的請(qǐng)求,通過(guò)curl可以獲取到各個(gè)環(huán)節(jié)的耗時(shí)情況,

比如域名解析的耗時(shí),建立連接的耗時(shí),服務(wù)端處理的耗時(shí),總的耗時(shí)。



國(guó)內(nèi)某合作方素材


curl -o /dev/null -s -w "http_code: %{http_code}\nhttp_connect:%{http_connect}\ncontent_type:%{content_type}\ntime_dns:%{time_namelookup}\ntime_redirect:%{time_redirect}\ntime_pretransfer:%{time_pretransfer}\ntime_connect:%{time_connect}\ntime_starttransfer:%{time_starttransfer}\ntime_total:%{time_total}:\nspeed_download:%{speed_download}\n " "http://di.adsame.com/flv_test/20161107143341_231.jpg";


http_code: 200

http_connect:000

content_type:p_w_picpath/jpeg

time_dns:0.005

time_redirect:0.000

time_pretransfer:0.013

time_connect:0.013

time_starttransfer:0.021

time_total:0.029:

speed_download:441815.000


蘋果官網(wǎng)圖片素材


curl -o /dev/null -s -w "http_code: %{http_code}\nhttp_connect:%{http_connect}\ncontent_type:%{content_type}\ntime_dns:%{time_namelookup}\ntime_redirect:%{time_redirect}\ntime_pretransfer:%{time_pretransfer}\ntime_connect:%{time_connect}\ntime_starttransfer:%{time_starttransfer}\ntime_total:%{time_total}:\nspeed_download:%{speed_download}\n " "http://p_w_picpaths.apple.com/v/iphone-7/d/p_w_picpaths/overview/design_hero_large.jpg";


http_code: 200

http_connect:000

content_type:p_w_picpath/jpeg

time_dns:0.449

time_redirect:0.000

time_pretransfer:0.456

time_connect:0.456

time_starttransfer:0.465

time_total:0.493:

speed_download:419293.000

 


微博短域名鏈接


curl -o /dev/null -s -w "http_code: %{http_code}\nhttp_connect:%{http_connect}\ncontent_type:%{content_type}\ntime_dns:%{time_namelookup}\ntime_redirect:%{time_redirect}\ntime_pretransfer:%{time_pretransfer}\ntime_connect:%{time_connect}\ntime_starttransfer:%{time_starttransfer}\ntime_total:%{time_total}:\nspeed_download:%{speed_download}\n "  -L "http://t.cn/Rip1YJA"


http_code: 200

http_connect:000

content_type:text/html;charset=GBK

time_dns:0.210

time_redirect:0.079

time_pretransfer:0.240

time_connect:0.240

time_starttransfer:0.290

time_total:0.369:

speed_download:4349.000

 


4.其他


目前只能用curl獲取到指定請(qǐng)求的靜態(tài)頁(yè)面,還是無(wú)法像瀏覽器那樣將頁(yè)面中的鏈接都請(qǐng)求到,

這樣就無(wú)法真實(shí)反應(yīng)瀏覽器中訪問(wèn)頁(yè)面的耗時(shí)情況。

不過(guò)當(dāng)用戶反映訪問(wèn)某個(gè)頁(yè)面慢的時(shí)候,

通過(guò)curl訪問(wèn)對(duì)應(yīng)的地址基本上可以確定,

單個(gè)請(qǐng)求主要耗時(shí)在哪里。


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI