從理解谷歌瀏覽器timing到優化頁面請求阻塞的問題實戰


大家好,今天又是一個陽光明媚的下午....,想想項目即將完事了,想搗鼓下項目優化方面的事情,剛好發現某個頁面的數據有時候來的慢,有時候來的快。

於是F12一看,我giao!什么情況,馬老師發生甚么事了 ,一個接口請求要 20s ,這好嗎?這當然不好。

於是我們需要查看谷歌瀏覽器的timing:可以分析開頁面請求開始的那一刻到數據請求結束的詳細花費時間。

 

上圖幾個字段代表的意思:

Queued at :表示該請求加入到請求隊列中的時刻,請求隊列在打開F12后第一次發送請求的時候創建,直到關閉控制台的時候銷毀。

Started at :表示請求開始處理的時刻。

Queueing:表示請求從加入到請求隊列中到請求開始處理經過的時間。

Stalled:請求在可以被發送出去之前的等待時間(阻塞時間),一般是等待可復用的TCP連接釋放的時間。瀏覽器對於單個域名只能同時建立4~6個TCP連接(不同瀏覽器實現有差異)。

Proxy Negotiation:瀏覽器和代理服務器連接的協商時間。

DNS Lookup:域名解析花費的時間。

Initial Connection:建立TCP連接花費的的時間,包括TCP握手/重試和協商SSL。

Request sent:發送請求花費的時間。

Waiting (TTFB):從發出請求到接收到響應第一個字節經過的時間,包括網絡延遲時間。

Content Download:接收響應花費的時間。

參考: https://www.jianshu.com/p/9c9a9e8da713

 可以清楚的看到stalled狀態:請求發出去被阻塞耗時長達20s,原來我的這個頁面還有加載十來張靜態圖片,猜測可能是由於靜態資源請求先觸發,阻塞了xhr請求。

請求被阻塞時候,頁面的文字部分接口還在請求中,導致沒顯示出來,而先顯示了圖片,由於圖片加載慢,導致圖片還在加載,文章文章也被阻塞沒加載出來。頁面效果:

我們看到如下圖請求 慢的這個接口被圖片給阻塞了,只有圖片請求完成才會觸發它正式從本地向后台發起請求,

 

解決辦法:

1、等文章接口請求完,再渲染圖片組件,注意我們可以這樣做是因為,圖片組件是根據img標簽的src地址去獲取圖片,所以可以通過先后順序來控制請求的先后。即設置一個布爾值控制圖片是否顯示,重要接口請求完時候設置該布爾值為true,顯示圖片組件,此時img就會發起請求去加載圖片。


2、先讓文章接口先請求(還在研究中)

 


 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM