Chrome 性能監測

来源:https://www.cnblogs.com/karthuslorin/archive/2019/04/14/10655513.html
-Advertisement-
Play Games

前端性能優化一直是前端工作中必不可少的一部分,但是我們如何知道哪些部分的性能有優化的空間呢?此時,Chrome 性能監測就派上用場了。 正所謂:知己知彼,百戰百勝,只有確定了性能瓶頸,才能有條不紊地進行前端性能優化工作。 Performance Performance 是 Chrome 開發者工具中 ...


前端性能優化一直是前端工作中必不可少的一部分,但是我們如何知道哪些部分的性能有優化的空間呢?此時,Chrome 性能監測就派上用場了。

正所謂:知己知彼,百戰百勝,只有確定了性能瓶頸,才能有條不紊地進行前端性能優化工作。

Performance

Performance 是 Chrome 開發者工具中的一個功能,用於記錄網頁從初始化到運行時的所有性能指標。

使用 Performance 之前,我們需要先打開 Chrome 的無痕模式,因為,身為開發者,Chrome 上一般都有著大量的 Chrome 插件,而 Chrome 插件會顯著影響頁面的性能。所以,我們需要進入無痕模式來規避 Chrome 插件對頁面性能的影響。

進入無痕模式後,我們打開需要進行性能監測的網站,開啟 Chrome 開發者工具,點擊 Performance 選項卡,進入面板。此時的面板什麼都沒有,只有幾個操作提示。

接下來,我們點擊左上角的 Record(小圓點)按鈕,Performance 進入 Record 階段,從此刻開始,它會記錄用戶的交互以及這些交互對頁面性能數據的影響。當交互完成後,點擊 Stop 來停止 Record ,Performance 面板會展示出剛纔錄製的頁面性能數據。如下所示:

拿到 Performance 性能報告,首先,我們先看頂部的三個數據:FPS、CPU 以及 NET。

  1. FPS:主要和動畫性能有關,代表每秒幀數。圖表中的綠色長條越高,說明FPS越高,用戶體驗越好。如果其中有紅色長條,代表著這部分幀數有卡頓,需要優化。
  2. CPU:和底部的 Summary 對應,顯示了頁面載入過程中,各階段對 CPU 的占用時間,占用時間越多,代表該階段越需要優化。在 Performance 中,該部分是最需要關註的指標之一。
  3. NET:主要展示了網路請求的先後順序以及各自的請求耗時,可以被 Network 面板完美替代,建議直接查看 Network。

接下來,我們來瞭解一下最雜亂的中間部分,一般情況下,我們主要根據中間部分中 Main 的圖表來分析頁面性能。

由於 Main 的圖表長得像一團團倒立的火焰,所以,我們將其稱為火焰圖。它展現了主線程在 Record 過程中做的所有事情,包括:Loading、Scripting、Rendering、Painting 等等。火焰圖的橫軸代表著時間,縱軸代表著調用堆棧。每一個長條代表執行了一個事件或函數,長條的長度代表著耗時的長短,如果某個長條右上角是紅色的則表示該函數存在性能問題,需要重點關註。

活用 Performance,按照 Chrome 的提示進行優化,可以解決掉絕大部分的性能問題。

Performance monitor

看起來,Performance 提供的性能監測功能已經較為完備,但是,它有兩個問題:

  1. 數據缺少實時性
  2. 數據面板過於複雜,不夠直觀

為瞭解決這兩個問題,Chrome 提供了 Performance monitor 功能,以實時直觀的數據展示頁面性能。

相比 Performance ,Performance monitor 所在的位置較為隱蔽,需要以下幾個步驟才能打開:

  1. 打開 Chrome 開發者工具
  2. 按“Esc”,打開附加面板
  3. 點擊選項按鈕,打開選項菜單
  4. 選擇“Performance monitor”

由於 Performance monitor 是實時的,所以,進入面板後,Performance monitor 將會自動運行,記錄頁面性能數據,通過點擊左側的選項,可以調整記錄的數據類型。

相比 Performance,Performance monitor 的功能雖然不夠全面,但勝在簡潔、實時。通常情況下,可以通過 Performance monitor 來分析頁面使用過程中的性能問題,例如:動畫性能等。

Audits

雖然 Performance 以及 Performance monitor 提供了大量性能數據,但是,如果開發者經驗不足,複雜的性能數據無異於天書。那麼,Chrome 能不能自動分析出頁面的性能缺陷,給出具體的性能優化點呢?萬幸,Chrome 提供了 Audits。

Audits 源於著名的開源自動化分析插件——Lighthouse,Lighthouse 不僅能夠分析頁面性能,還能夠對 PWA、無障礙訪問、SEO 等進行測試評分,並給出優化建議。為了方便開發者使用,在 Chrome 60 版本,Chrome 開發團隊直接將其加入 Chrome 開發者工具中的 Audits 面板中。

Lighthouse 轉正之後,使用該功能不需要安裝額外的 Chrome 插件,只需要進入 Audits 面板,點擊 Run audits 按鈕即可生成一份頁面分析報告,如下所示:

通過結果可以看到,Audits 不僅能夠自動分析出頁面的缺陷,還能根據缺陷給出具體的優化建議。這就意味著,使用了 Audits 之後,我們只需要按照 Audits 給出的優化建議逐條嘗試,即可大幅度提高頁面性能,實乃前端偷懶神器~

彩蛋

之前我們一直說的是基於 Chrome 瀏覽器的性能監測方案,但是,其實還有一種不基於瀏覽器的性能監測方案:編程式性能監測。

編程式性能監測主要依托於 W3C 推出的 Performance API,該套 API 的目的是簡化開發者對網站性能進行精確分析與控制的過程,方便開發者採取手段提高 web 性能。

相比之前的性能監測方法,Performance API 最大的優點是:靈活、精確,所以一經推出便風靡全球。比如,Vue 中便封裝了 Performance API 方便開發者進行性能追蹤。

由於篇幅有限,在此不再贅述,有興趣的同學可以自行瞭解。

總結

性能監測是前端性能優化的第一步,只有學會了性能監測,我們才能更好地剖析性能問題,直至徹底解決性能問題。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Android老師佈置的課程作業——簡單計算器 功能要求實現四則運算,參考界面見下圖: 首先給各位老鐵提供apk安裝包以及項目壓縮包,略表誠意~ github地址:https://github.com/wonke/Calculator 使用GirdLayout比較適合計算器這種規則的佈局,每行有幾個 ...
  • 在項目代碼中為了避免條件分支,需要把bool變成int的形式,然後通過向量運算的形式和單個單個的形式,其結果卻是不同,向量的方式為 ,而單個的轉換則為 有如下kernel代碼: 列印結果顯示:TMP2列印出來的都是 1或0,而tmp3列印出來的則都是1或者0。 謹記: 若要萬無一失,確保準確,則應該 ...
  • 日常項目中,經常遇到一些表情雨/金幣雨/彩帶雨 等下落的動畫,之前做android原生的時候,寫過類似的效果,主要通過自定義view 在 里繪製下落的過程,具體可以看下我的這篇github地址 "android 仿微信表情雨下落" ,現在轉戰 ,同樣可以實現這樣的效果,主要用到的動畫庫 "react ...
  • 這個世界唯一不變的可能就是變化,歷史的車輪滾滾向前,它不會因任何人的消極緩慢而停止。時代拋棄你時,連一聲再見都不會說。 從最開始的Javascrpit、到後來的Jquery、(ExtJs、EasyUI、MiniUI)、Bootstrap、Layui,再到如今的mvvm框架(Vue.js、Angula ...
  • HTML標記語言,網頁製作的第一步。 什麼是HTML呢?查百度 基礎語法 常用標簽 HTML是超文本標記語言,HTML不用編譯,直接在瀏覽器中執行,HTML是一個文本文件。 HTML基本結構,標簽,元素,屬性,註解 標簽屬性格式: 文檔類型聲明: 編碼文件 標題標簽,段落標簽,預格式化標簽,水平線 ...
  • DOM編程 首先,需要明確JavaScript訪問DOM性能的開銷所在。在瀏覽器中。對於DOM和ECMAScript的支持一般是各自獨立實現的,因此通過ECMAScript訪問DOM自然而然就會產生較大的開銷,而且對於DOM的訪問越頻繁,性能的開銷越大。 儘量將運算放在ECMAScript中進行,避 ...
  • 前端通過請求獲取數據流生成文檔文件的方式是一種開發下載文檔的方式,那麼在前端如何將數據流轉成文檔呢?代碼如下 ...
  • 1引言 HTTP是一個屬於應用層的面向對象的協議,由於其簡捷、快速的方式,適用於分散式超媒體信息系統。它於1990年提出,經過幾年的使用與發展,得到不斷地完善和擴展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的規範化工作正在進行之中,而且HTTP-NG(Next Generat ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...