載入效能:指標、測量、優化與監控

這篇文章會分享 Google 制定的 Web Vitals 效能指標與使用者體驗的關係與實際應用、如何在專案中利用模擬與實地的方式測量與監控,以及如何優化專案以提升效能與使用者體驗。

效能指標與使用者體驗

當使用者使用我們的產品時,最重要的事情之一是他們能多快地看到並使用它。那麼,我們該如何測量這一點呢?

web vitals / core web vitals

網頁指標(Web Vitals,如圖 FCP、LCP、INP、TBT、TTI、CLS 和 Speed Index)提供了一種從使用者角度評估效能的方法,這些指標是源自於 RAIL 模型(Response、Animation、Idle、Load,我們可以利用這些指標來測量所做的改進以及這些改進如何影響使用者的體驗和感受。

意即:

將上面提到的這些感受轉化為指標為數字,即是想要達到的目標。來看看 Google 如何定義每個指標的 threshold,一個好的網站應該符合以下標準:

指標 良好的 threshold
FCP 小於 1.8 秒
LCP 小於 2.5 秒
INP 小於 200 毫秒
TBT 小於 300 毫秒
CLS 小於 0.1
Speed Index 小於 4.4 秒

需要注意的是,這個 threshold 是針對桌機的,使用者對行動裝置會有更高的容忍度。

由於在這篇文章中我們想要解決的是白頁 aka 載入效能的問題,因此我們將專注於 FCP 和 LCP 這兩個指標,以及 LT (載入時間)。

如何蒐集資料、改善與監測效能

在談論我們做了什麼之前,先來看看如何蒐集資料,以確保改進是走在正確的道路上,以便達到目標,並比較改進前後的情況。在此以使用 Lighthouse、Chrome DevTool 和 Datadog 這些工具來蒐集資料,進行改善和監測。大致上會使用 Lighthouse 與 Chrome DevTool 作為實作時檢視的工具,幫助了解改進是否有效,以及使用 Datadog 來蒐集與監測使用者的真實狀況。

流程 如何蒐集資料、改善與監測效能

說明:

實際案例

在目前的遇到的案例中,遇到的問題是在載入頁面時,使用者可能會遇到在 loading icon 出現前會出現空白頁 (這個問題可用 Chrome 中模擬 4G 網路來重現)。通常使用者會視為頁面無法正常運作,或者對這個頁面失去耐心、不想等待而關掉該頁面。

這樣的問題可能是由於下列原因造成的:

因此實作以下改善:

上線後 LT 減少約 6%,FCP 減少約 36%,LCP 不減反升 (待查待補)。

總結

參考資料


載入效能 效能調校 Web Vitals 效能監控 Lighthouse Core Web Vitals Loading Performance Chrome DevTools RAIL Real User Monitoring Sentry Datadog Synthetic Monitoring active monitoring lighthouse-cli passive monitoring sharing 前端效能 系列文 加載效能