Chrome DevTools 之 Network,網(wǎng)絡(luò)加載分析利器

雖然一直在用Chrome DevTools赖捌,但大多停留在常用的功能和調(diào)試上,比如Elements/Network/Sources/Console等主要功能赫编,而對(duì)于性能分析/優(yōu)化相關(guān)的Timeline/Profiles一直敬而遠(yuǎn)之巡蘸,深感其門檻高,于是潛心閱讀文檔擂送,以望窺得一二悦荒,以解決實(shí)際問(wèn)題。

不同版本的Chrome DevTools差別很大嘹吨,這篇文章基于最新版的Mac Chrome完成搬味,主要介紹Network/Timeline/Profiles三個(gè)方面的內(nèi)容,為后續(xù)的加載優(yōu)化蟀拷,性能優(yōu)化做準(zhǔn)備碰纬。

系統(tǒng)版本 & Chrome版本

之前寫(xiě)過(guò)一篇關(guān)于渲染性能的長(zhǎng)文章,有興趣的可以先閱讀閱讀问芬。

Network有哪些功能悦析?

Network主要有5個(gè)視窗,分別有不同的功能:
Controls 工具欄:用來(lái)控制Network的功能及外觀此衅。
Filters 篩選欄:根據(jù)篩選條件篩選請(qǐng)求列表强戴,按住command/ctrl鍵可多選亭螟。
Overviews 概覽:資源被加載過(guò)來(lái)的時(shí)間線,如果多條時(shí)間線垂直堆疊骑歹,表示多個(gè)資源被并行加載预烙。
Request Table 請(qǐng)求列表:該視窗列出了所有的資源請(qǐng)求,默認(rèn)按時(shí)間順序排序道媚,點(diǎn)擊某個(gè)資源扁掸,可以查看更詳細(xì)的信息。
Summary 總覽:匯總了請(qǐng)求數(shù)量最域,傳輸數(shù)據(jù)大小谴分,加載時(shí)間等信息。

Network視窗

默認(rèn)情況下羡宙,Request Table 請(qǐng)求列表展示如下信息狸剃,當(dāng)然,在請(qǐng)求列表的表頭右鍵可以配置請(qǐng)求列表顯示的內(nèi)容狗热。
Name:資源的名稱。
Status:HTTP的狀態(tài)碼虑省。
Type:資源的MIME類型匿刮。
Initiator:表示請(qǐng)求的上游,即發(fā)起者探颈。Parser表示是HTML解析器發(fā)起的請(qǐng)求熟丸;Redirect表示是HTTP跳轉(zhuǎn)發(fā)起的請(qǐng)求;Script表示是由腳本發(fā)起的請(qǐng)求伪节;Other表示是由其他動(dòng)作發(fā)起的請(qǐng)求光羞,比如用戶跳轉(zhuǎn)或者在導(dǎo)航欄輸入地址等。
Size:請(qǐng)求的大小怀大,包括響應(yīng)頭和響應(yīng)體的內(nèi)容纱兑。
Time:請(qǐng)求的時(shí)間,從請(qǐng)求開(kāi)始到請(qǐng)求完全結(jié)束化借。
Timeline:請(qǐng)求的時(shí)間線潜慎。

右鍵配置請(qǐng)求列表

怎么錄制頁(yè)面快照?

選中工具欄的快照?qǐng)D標(biāo)蓖康,可以錄制頁(yè)面快照铐炫。


錄制快照

選中某一個(gè)快照,在概覽/請(qǐng)求列表出現(xiàn)的黃色豎線蒜焊,就是該快照被捕捉的真實(shí)時(shí)間倒信,雙擊快照可以放大。


快照捕獲時(shí)間

DOMContentLoaded事件/Load事件的區(qū)別泳梆?

DOMContentLoaded事件 頁(yè)面文檔完全加載并解析完畢之后鳖悠,會(huì)觸發(fā)DOMContentLoaded事件榜掌,它在兩個(gè)地方都有體現(xiàn):概覽視窗的藍(lán)色豎線,總覽視窗的觸發(fā)時(shí)間竞穷。
Load事件 當(dāng)所有資源加載完成后觸發(fā)的唐责,它在三個(gè)地方有體現(xiàn):概覽視窗的紅色豎線,請(qǐng)求列表視窗的紅色豎線瘾带,總覽視窗的觸發(fā)時(shí)間鼠哥。

DOMContentLoaded/Load事件

結(jié)合DOM文檔加載的加載步驟,DOMContentLoaded事件/Load事件觸發(fā)時(shí)機(jī)如下:

  1. 解析HTML結(jié)構(gòu)看政。
  2. 加載外部腳本和樣式表文件朴恳。
  3. 解析并執(zhí)行腳本代碼。// 部分腳本會(huì)阻塞頁(yè)面的加載
  4. DOM樹(shù)構(gòu)建完成允蚣。//DOMContentLoaded 事件
  5. 加載圖片等外部文件于颖。
  6. 頁(yè)面加載完畢。//load 事件

資源請(qǐng)求明細(xì)包含了哪些信息嚷兔?

點(diǎn)擊請(qǐng)求列表某個(gè)請(qǐng)求的名稱森渐,可以查看該請(qǐng)求的詳細(xì)信息。詳細(xì)信息主要有4個(gè)方面:
Headers:資源的HTTP頭
Preview:預(yù)覽JSON/image/text資源
Response:資源的HTTP響應(yīng)頭
Timing:資源的請(qǐng)求生命周期
Cookies:查看HTTP請(qǐng)求頭和響應(yīng)頭附帶的cookie信息

查看HTTP頭:包含了資源的請(qǐng)求URL冒晰,HTTP方法同衣,響應(yīng)的狀態(tài)碼。此外壶运,還列出了HTTP請(qǐng)求頭和響應(yīng)頭及其值耐齐,以及請(qǐng)求參數(shù)。


HTTP頭

查看HTTP響應(yīng)內(nèi)容:可以清楚的看到HTTP請(qǐng)求的返回結(jié)果蒋情。


HTTP響應(yīng)

資源預(yù)覽:沒(méi)什么好講的埠况,可以查看JSON/image/text等資源。


資源預(yù)覽

Cookies:該域名下存儲(chǔ)的cookie信息棵癣,其中包含了cookie的特性辕翰。


Cookies

Name:cookie的名稱。
Value:cookie的值浙巫。
Domain:cookie所屬域名金蜀。
Path:cookie所屬URL。
Expire/Max-Age:cookie的存活時(shí)間的畴。
Size:cookie的字節(jié)大小渊抄。
HTTP:表示cookie只能被瀏覽器設(shè)置游桩,而且JS不能修改需五。
Secure:表示cookie只能在安全連接上傳輸。

Timing:查看資源請(qǐng)求的生命周期族奢,包含Queing/Stalled/Request/Response/Request sent/Waiting/Content Download各個(gè)階段煎娇。

Timeing

如何查看資源請(qǐng)求的上游和下游二庵?

按時(shí)shift鍵贪染,鼠標(biāo)hover在請(qǐng)求上,可以查看請(qǐng)求的上游和下游催享,如下圖所示杭隙,hover在common.js上,可以看到有一個(gè)綠色請(qǐng)求因妙、一個(gè)紅色請(qǐng)求痰憎。其中綠色請(qǐng)求表示common.js的上游請(qǐng)求,即誰(shuí)觸發(fā)了common.js請(qǐng)求攀涵,紅色請(qǐng)求表示common.js的下游請(qǐng)求铣耘,即common.js又觸發(fā)了什么請(qǐng)求。

查看上下游請(qǐng)求

想對(duì)請(qǐng)求列表排序以故?

請(qǐng)求列表的資源默認(rèn)是按照起始時(shí)間排序蜗细,最上面的請(qǐng)求最先發(fā)起。點(diǎn)擊表頭的Timeline可以重新排序怒详,主要有如下幾個(gè)維度炉媒。
Timline - Start Time:按請(qǐng)求的發(fā)起時(shí)間排序。
Timline - Response Time:按請(qǐng)求的響應(yīng)時(shí)間排序昆烁。
Timline - End Time:按請(qǐng)求的結(jié)束時(shí)間排序橱野。
Timline - Total Duration:按請(qǐng)求的總耗時(shí)排序,可以快捷的找出耗時(shí)最多的資源善玫。
Timline - Latency:按請(qǐng)求的延遲排序,延遲是指請(qǐng)求發(fā)起的時(shí)間到響應(yīng)開(kāi)始的時(shí)間密强,可以快捷的找出請(qǐng)求等待時(shí)間最長(zhǎng)(TTFB)的資源茅郎。

按Timeline排序

想對(duì)請(qǐng)求進(jìn)行篩選?

通過(guò)篩選視窗可以對(duì)請(qǐng)求進(jìn)行多維度的篩選或渤,按住Command/Ctrl鍵可以同時(shí)選擇多個(gè)篩選條件系冗。

多個(gè)篩選條件

此外,篩選框可以實(shí)現(xiàn)很多定制化的篩選薪鹦,比如字符串匹配掌敬,關(guān)鍵詞篩選等,其中關(guān)鍵詞篩選主要有如下幾種:
domain:篩選出指定域名的請(qǐng)求池磁,不僅支持自動(dòng)補(bǔ)全奔害,還支持*匹配。
has-response-header:篩選出包含指定響應(yīng)頭的請(qǐng)求地熄。
is:通過(guò)is:running找出WebSocket請(qǐng)求华临。
larger-than:篩選出請(qǐng)求大于指定字節(jié)大小的請(qǐng)求,其中1000表示1k端考。
method:篩選出指定HTTP方法的請(qǐng)求雅潭,比如GET請(qǐng)求揭厚、POST請(qǐng)求等。
mime-type:篩選出指定文件類型的請(qǐng)求扶供。
mixed-content:篩選出混合內(nèi)容的請(qǐng)求(不懂啥意思)筛圆。
scheme:篩選出指定協(xié)議的請(qǐng)求,比如scheme:http椿浓、scheme:https太援。
set-cookie-domain:篩選出指定cookie域名屬性的包含Set-Cookie的請(qǐng)求。
set-cookie-name:篩選出指定cookie名稱屬性的包含Set-Cookie的請(qǐng)求轰绵。
set-cookie-value:篩選出指定cookie值屬性的包含Set-Cookie的請(qǐng)求粉寞。
status-code:篩選出指定HTTP狀態(tài)碼的請(qǐng)求。

主流的幾個(gè)篩選截圖如下:


domain篩選
has-response-header篩選
larger-than篩選
method篩選
Mime-type篩選
set-cookie-name篩選

如何模擬不同的網(wǎng)絡(luò)環(huán)境左腔?

Network > Filters 篩選欄下有可以模擬不同網(wǎng)絡(luò)環(huán)境下的選項(xiàng)唧垦,對(duì)于模擬測(cè)試低網(wǎng)速環(huán)境,以及針對(duì)低網(wǎng)速環(huán)境做加載優(yōu)化很有幫助液样。

模擬網(wǎng)絡(luò)環(huán)境

如何清除緩存和Cookie振亮?

在Network的請(qǐng)求列表視窗中,右鍵也提供了清除Cookie和緩存的選項(xiàng)鞭莽。


Paste_Image.png

另外坊秸,調(diào)試模式下,強(qiáng)烈建議勾選Disable cache選項(xiàng)澎怒,以避免緩存引起的一些詭異問(wèn)題褒搔。

系列文章
Chrome DevTools 之 Timeline,快捷性能優(yōu)化工具
Chrome DevTools 之 Profiles喷面,深度性能優(yōu)化必備

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末星瘾,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子惧辈,更是在濱河造成了極大的恐慌琳状,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盒齿,死亡現(xiàn)場(chǎng)離奇詭異念逞,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)边翁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門翎承,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人倒彰,你說(shuō)我怎么就攤上這事审洞。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵芒澜,是天一觀的道長(zhǎng)仰剿。 經(jīng)常有香客問(wèn)我,道長(zhǎng)痴晦,這世上最難降的妖魔是什么南吮? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮誊酌,結(jié)果婚禮上部凑,老公的妹妹穿的比我還像新娘。我一直安慰自己碧浊,他們只是感情好涂邀,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著箱锐,像睡著了一般比勉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上驹止,一...
    開(kāi)封第一講書(shū)人閱讀 51,190評(píng)論 1 299
  • 那天浩聋,我揣著相機(jī)與錄音,去河邊找鬼臊恋。 笑死衣洁,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的抖仅。 我是一名探鬼主播坊夫,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼撤卢!你這毒婦竟也來(lái)了践樱?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤凸丸,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后袱院,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體屎慢,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年忽洛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了腻惠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡欲虚,死狀恐怖集灌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤欣喧,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布腌零,位于F島的核電站,受9級(jí)特大地震影響唆阿,放射性物質(zhì)發(fā)生泄漏益涧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一驯鳖、第九天 我趴在偏房一處隱蔽的房頂上張望闲询。 院中可真熱鬧,春花似錦浅辙、人聲如沸扭弧。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)鸽捻。三九已至,卻和暖如春氨淌,著一層夾襖步出監(jiān)牢的瞬間泊愧,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工盛正, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留删咱,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓豪筝,卻偏偏與公主長(zhǎng)得像痰滋,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子续崖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,079評(píng)論 25 707
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理敲街,服務(wù)發(fā)現(xiàn),斷路器严望,智...
    卡卡羅2017閱讀 134,652評(píng)論 18 139
  • API定義規(guī)范 本規(guī)范設(shè)計(jì)基于如下使用場(chǎng)景: 請(qǐng)求頻率不是非常高:如果產(chǎn)品的使用周期內(nèi)請(qǐng)求頻率非常高多艇,建議使用雙通...
    有涯逐無(wú)涯閱讀 2,539評(píng)論 0 6
  • iOS網(wǎng)絡(luò)編程讀書(shū)筆記 Facade Tester客戶端門面模式的實(shí)例(被動(dòng)版本化) 被動(dòng)版本化,所以硬編碼URL...
    melouverrr閱讀 1,606評(píng)論 3 7
  • 看了一部很溫馨的美國(guó)劇情片《一只狗的使命》像吻,劇情很簡(jiǎn)單峻黍,通過(guò)一只可愛(ài)的狗狗的三世輪回來(lái)領(lǐng)悟生命的意義,可以把個(gè)看做...
    石林析閱讀 316評(píng)論 0 1