咱們常用 Chrome Dev Tools 來開發調試,可是不多知道怎麼利用它來分析頁面性能,這篇文章,我將詳細說明怎樣利用 Chrome Dev Tools 進行頁面性能分析及性能報告數據如何解讀。css
上圖是 Chrome Dev Tools 的一個截圖,其中,我認爲能用於進行頁面性能快速分析的主要是圖中圈出來的幾個模塊功能,這裏簡單介紹一下:html
首先,咱們在分析的時候,建議使用隱身模式打開頁面,排除一些插件等因素對頁面性能狀況的影響。而後,咱們把頁面緩存勾選去掉,要測 disable cache 的狀況,再把網絡狀況調整一下,咱們用電腦打開頁面的時候通常都連着 wifi 等,要更真實一些去測頁面的性能,仍是把網絡調到 3G 等狀況比較好,如圖:
調整好以後,咱們切到 Performance 面板,這裏先說明一下一些按鈕的做用:
上圖,從左到右分別表明的是:前端
這裏,我以京東的一個頁面爲例,勾選 disable cache,網絡狀況爲 Fast 3G,來講明一下,應該如何理解性能結果,找出優化點。git
咱們來看看網絡面板,看看都有哪些信息。以下圖所示:
從圖中能夠看出,頁面中有的一些性能優化手段有:github
https://wq.jd.com/wxportal/index_v6
,頁面加載回來的 document 就是一個渲染好的 html 頁面而從圖片,我的認爲,還能夠考慮用上的一些性能優化手段有:web
切到 Performance 面板,點擊自動重啓頁面,並記錄整個頁面加載的過程,而後來分析結果~後端
性能面板,有不少不少的參數,咱們要看一些比較常見的。首先看白屏時間和網絡加載狀況,以下圖:
上圖,咱們能夠看幾點信息:瀏覽器
另外,咱們能夠看一下資源加載有沒有空白期,雖然上圖沒有,可是若是資源加載之間存在空白期,說明沒有充分利用資源加載的空閒時間,能夠調整一下。緩存
火焰圖,主要在 Main 面板中,是咱們分析具體函數耗時最常看的面板,咱們來看一下,如圖:
性能優化
首先,面板中會有不少的 Task,若是是耗時長的 Task,其右上角會標紅(圖中沒有,說明頁面首屏的邏輯處理分配得還不錯),這個時候,咱們能夠選中標紅的 Task (這裏就隨手選中一個),而後放大(選中,滑動鼠標可放大),看其具體的耗時點。
放大後,這裏能夠看到都在作哪些操做,哪些函數耗時了多少,這裏代碼有壓縮,看到的是壓縮後的函數名。而後咱們點擊一下某個函數,在面板最下面,就會出現代碼的信息,是哪一個函數,耗時多少,在哪一個文件上的第幾行等。這樣咱們就很方便地定位到耗時函數了。
還能夠橫向切換 tab ,看它的調用棧等狀況,更方便地找到對應代碼。具體你們能夠試試~
在 Timings 的區域,咱們能夠看到本次加載的一些關鍵時間,分別有:
咱們能夠選區(選擇從白屏到有內容的區域,表明本次的頁面加載過程),能夠對照着看一下上面的時間,截圖以下:
另外,咱們能夠看到頁面中的內存使用的狀況,好比 JS Heap(堆),若是曲線一直在增加,則說明存在內存泄露,從圖中能夠看出,至關長的一段時間,內存曲線都是沒有降低的,這裏是有發生內存泄露的可能的,在 Onload 以後,內存才獲得釋放。更多內存泄露產生的緣由及分析方法,能夠參照個人這篇文章《Chrome 瀏覽器垃圾回收機制與內存泄漏分析》
最下方就是頁面的一個整理耗時概況,若是 Scripting 時間過長,則說明 js執行的邏輯太多,能夠考慮優化js,若是渲染時間過長,則考慮優化渲染過程,若是空閒時間過多,則能夠考慮充分利用起來,好比把一些上報操做放到頁面空閒時間再上報等。
以上就是性能面板能夠看的一些信息。另外,咱們能夠藉助 Layers面板來查看頁面分層狀況的3D視圖,Rendering面板(點擊more tools->Rendering便可打開),勾選Layer Bordersk能夠看到複合層、RenderLayer區域,能夠幫助分析動畫卡頓、是否開啓GPU加速等問題,而 Memory 面板 和 JavaScript Profiler 面板主要是分析內存泄露的,這裏就不說了,能夠看我另外一篇文章《Chrome 瀏覽器垃圾回收機制與內存泄漏分析》
Audits 其實就是 LightHouse,LightHouse 是Google開源的一個自動化測試工具,它經過一系列的規則來對網頁進行評估分析,最終給出一份評估報告。它的面板是這樣的:
Audits主要從5個方面來給網頁打分,固然你也能夠去掉某些方面的評估。在選擇了設備、評估方面、網絡狀況等選項後,點擊 Run Audits ,咱們將會獲得一份報告。
上圖是一個整體報告,能夠看出,這個頁面的性能不太合格。固然一次的測試也說明不了什麼問題,只能作個參考。咱們看它的性能指標分別有:
這些時間,均可以點擊圖中紅框切換展現方式,會附上對應的時間解釋,而後能夠點擊 Learn more 來查看詳細的指標介紹。在文檔中,每一項指標都會明確的分爲三個部分:爲何說此審查很是重要;如何經過此審查;如何實現此審查;
性能建議主要分爲3類, Opportunities 可優化項、手動診斷項、經過的審查項。本次的例子以下圖:
圖中的每一項均可以展開來看明細解釋,其中:
可優化項有2個建議:
這項裏面的內容指的是LightHouse發現的一些能夠直接優化的點,你能夠對應這些點來進行優化。
手動診斷項有6個建議:
這些項目表示LightHouse並不能替你決定當前是好是壞,可是把詳情列出來,由你手動排查每一個項目的狀況
經過的審查項
這裏列出的都是作的好的地方,本文例子共有16條,不過即便作的好,依然值得咱們進去仔細看一下,由於像全部條目同樣,這裏的每一個條目也有一個showmore,咱們能夠點進去仔細學習背後的知識和原理!
輔助功能指的是那些可能超出"普通"用戶範圍以外的用戶的體驗,他們以不一樣於你指望的方式訪問你的網頁或進行交互,本文的例子建議以下圖:
輔助功能類別測試屏幕閱讀器的能力和其餘輔助技術是否能在頁面中正常工做。例如:按元素來使用屬性,標籤使用是否規範,img 標籤是否缺乏 alt 屬性,可辨別的元素命名等等。這一項咱們不展開講,可是仍是建議你們按照審計建議修改一下網頁。
其餘幾項,本文的例子最佳實踐評分挺高的,而例子不支持PWA,也不須要考慮SEO,這裏就不展開說明了,有對應需求的能夠本身詳細看看便可。
最後總結一下,咱們利用Chrome Dev Tools 進行頁面性能分析有如下指標能夠參考:
而這些分析方法,本文都詳細寫了。能夠認真看看~