功能寫完不等於使用者體驗就夠好。載入過慢、動畫卡頓、按鈕點擊延遲,這些都是會在使用者心中悄悄扣分的訊號,第一次造訪的訪客甚至可能直接離開。本章從 Performance 面板的結構談起,後續章節會逐步拆解效能分析的各個面向。

建構視角的對應章節:效能分析工具

兩種主要工具的定位#

開始量化網頁效能時通常有兩個切入點:

  • Lighthouse:以網頁體驗指標打分數,並列出可優化的方向,適合作為一般性的快速體檢。
  • Performance 面板:用於針對特定功能、互動或網頁遊戲等對每個 function 都需要錙銖必較的場景,提供瀏覽器運作時的完整細節。

開始錄製的兩種方式#

要進入 Performance 面板的測量,常用的起手式有兩種:

  • 頁面初始化:先導向 about:blank,按下 Record 後再前往要測量的網址,可避開任何干擾;或直接點選 Start profiling and reload page 圖示。
  • 針對功能:先按 Record,操作要測量的功能後再停止。

錄製結束後會生成效能報表,需要花一點時間熟悉操作:上下拖曳檢視其他列、左右拖曳移動時間範圍、滾輪縮放時間區間。

上方總覽圖表#

報告最上方的幾列簡明顯示了與效能直接相關的資訊。

FPS#

正常運作時頁面會維持 60 FPS。瀏覽器是單執行緒,必須處理解析、執行、樣式計算與每個像素的繪製,只要單一畫面超過 16ms(1000/60)就會掉幀。

  • 綠色方塊:當下的 FPS 變化,FPS 為 0 不代表卡住,可能只是畫面靜止。
  • 粉、紅色塊:掉幀提醒,使用者可能會感受到卡頓的區段。

CPU#

以顏色區分執行類型:

顏色執行類型
灰色瀏覽器內部工作
藍色HTML 請求與處理
黃色事件與 JavaScript 執行
綠色影像處理與畫面繪製
紫色樣式計算

NET#

藍色區段代表正在進行的請求,可展開下方的 Network 看細節。

截圖#

把游標移到 Frames 列上可以瀏覽特定時間點的畫面,左右移動就像重播一樣,方便鎖定要分析的時間區間。

下方詳細資訊#

點擊任意列的區塊,最下方會展開對應的詳細資訊面板。

Network#

排列各資源的時間與依賴關係,能看到 URL、Duration(傳輸與讀取時間)、Priority、資源大小等資訊。

Frames#

不同於截圖只是定時快照,Frames 顯示哪些時間點產生了新畫面,以及每一幀持續多久,並附上 DPS 與 CPU 相關資訊。

Timings#

每個 Timing 都是貫穿整份報表的時間線:

  • First Paint (FP):繪出預設背景色以外任何內容的時刻。
  • First Contentful Paint (FCP):繪出文字、圖片或有顏色 Canvas 的時刻。
  • DOMContentLoaded (DCL):HTML 載入並解析完畢。
  • onload (L):解析完 HTML 後的請求都載入完成。
  • Largest Contentful Paint (LCP):繪出頁面最大內容的時刻。

下方還能看到 Total Blocking Time (TBT),代表主執行緒(Main Thread)被阻塞時間的總和。

Experience#

Cumulative Layout Shift (CLS) 顯示頁面元素在載入過程的位移量,越低代表穩定性越好,與 FCP 同為 Core Web Vitals 的一員。

GPU#

呈現瀏覽器運作期間使用 GPU 的部分。在網址列輸入 chrome://gpu 可看到目前哪些功能啟用了硬體加速。

Raster 與 Compositor#

這兩列與畫面顯示緊密相關。瀏覽器更新畫面大致經過:

  • JavaScript
  • Style
  • Layout
  • Paint
  • Composite

哪些 JavaScript 操作會影響效能、有些動畫為何只需要合成(Composite),會在後續章節詳述。

小結#

Performance 面板把瀏覽器運作的細節攤在開發者眼前。後續章節會把效能議題拆成不同主題,逐一說明如何觀察與分析問題。

原文出處#

  • 原書/iThome:https://ithelp.ithome.com.tw/articles/10247709