使用 Lighthouse 最佳化網站體驗指標

使用 Chrome 的網路工具尋找改善使用者體驗的機會。

Addy Osmani
Addy Osmani

發布日期:2021 年 5 月 11 日

今天,我們將介紹 Lighthouse、PageSpeed 和 DevTools 中的新工具功能,協助您找出網站在網站使用體驗指標方面的改善方式。

提醒一下,Lighthouse 是一項開放原始碼的自動化工具,可用來改善網頁品質。您可以在 Chrome 開發人員工具中找到這項功能,並針對任何網頁 (公開或需要驗證) 執行這項功能。您也可以在 PageSpeed InsightsCIWebPageTest 中找到 Lighthouse。

Lighthouse 7.x 包含元素螢幕截圖等新功能,可讓您更輕鬆地檢視影響使用者體驗指標的 UI 部分 (例如影響版面配置變更的節點)。

我們也已在 PageSpeed Insights 中提供元素螢幕截圖支援功能,讓您更輕鬆地找出網頁一次性成效執行作業的問題。

元素螢幕截圖,突顯導致網頁版面配置偏移的 DOM 節點

評估 Core Web Vitals

Lighthouse 可綜合評估Core Web Vitals 指標,包括最大內容繪製累積版面配置偏移總封鎖時間 (首次輸入延遲時間的實驗室代理程式)。這些指標反映載入、版面配置穩定性和互動就緒度。網站體驗核心指標的未來中強調的其他指標,例如首次顯示內容所需時間,也都會列在其中。

Lighthouse 報表的「指標」部分會提供這些指標的實驗室版本。方便您大致瞭解需要注意的使用者體驗方面。

Lighthouse 效能指標
開發人員工具效能面板中的 Web Vitals 車道
DevTools「效能」面板中的新「網站體驗指標」選項會顯示軌跡,用來標示指標時刻,例如上方顯示的版面配置位移 (LS)。

現場指標 (例如 Chrome 使用者體驗報告RUM 中的指標) 則不受此限制,並且對於研究室資料是很實用的工具,可以反映實際使用者的使用體驗。實驗室資料無法提供您在實驗室中取得的診斷資訊,因此這兩者是相輔相成。

瞭解可以在 Web Vitals 中改善的部分

找出最大內容繪製元素

LCP 是用來評估感知載入體驗的指標。在載入網頁期間,標示主要 (或「最大」) 內容已載入且可供使用者查看的時間點。

Lighthouse 提供「Largest Contentful Paint 元素」稽核,可識別哪個元素是最大的內容繪製。將滑鼠遊標懸停在所需元素上,即可在主要瀏覽器視窗中醒目顯示該元素。

最大內容繪製元素

如果這項元素是圖片,您可以利用這項資訊對圖片的載入進行最佳化調整。Lighthouse 包含多項圖片最佳化稽核,可協助您瞭解圖片是否可採用更佳的壓縮方式、調整大小或以更合適的新型圖片格式呈現。

採用適當大小稽核圖片

您也能找到 Annie Sullivan 的 LCP 書籤小程式,只要按一下滑鼠,就能快速識別 LCP 元素的紅色矩形。

使用書籤小工具醒目顯示 LCP 元素

預先載入延遲發現的映像檔以改善 LCP

如要改善 Largest Contentful Paint,如果瀏覽器較晚發現關鍵的英雄圖片,請預先載入這些圖片。如果需要在偵測到圖片前載入 JavaScript 軟體包,就可能會發生延遲發現。

預先載入最大內容繪製圖片

我們詢問幾個有關預先載入 LCP 圖片的常見問題,或許也值得一提。

您可以預先載入回應式圖片嗎?。假設我們使用 srcsetsizes 指定回應式主圖片,如下所示:

<img src="lighthouse.jpg"
          srcset="lighthouse_400px.jpg 400w,
                  lighthouse_800px.jpg 800w,
                  lighthouse_1600px.jpg 1600w" sizes="50vw" alt="A helpful
Lighthouse">

由於 imagesrcsetimagesizes 屬性已新增至 link 屬性,我們可以使用 srcsetsizes 使用的相同圖片選取邏輯,預先載入回應式圖片:

<link rel="preload" as="image" href="lighthouse.jpg"
           imagesrcset="lighthouse_400px.jpg 400w,
                        lighthouse_800px.jpg 800w,
                        lighthouse_1600px.jpg 1600w"
imagesizes="50vw">

如果 LCP 圖片是透過 CSS 背景定義,稽核作業是否也會強調預先載入機會?是。

無論是透過 CSS 背景或 <img> 標示為 LCP 圖片的圖片,如果在瀑布流深度為三或以上時發現,都會是候選圖片。

延遲載入畫面外圖片,並避免在 LCP 中執行此操作

畫面外圖片如果對初始使用者體驗不重要,可以採用延遲載入的方式。這項技巧會延遲下載圖片,直到使用者捲動到圖片附近為止,藉此減少關鍵素材資源的網路爭用情形,並在某些情況下改善 LCP。「延遲載入畫面外圖片」檢查可協助您解決這個問題:

延後載入畫面外圖片

不應延遲載入關鍵的不需捲動位置圖片,例如最大內容繪製圖片。否則可能會延遲載入 LCP 圖片。如果 Lighthouse 發現 LCP 圖片未正確延遲載入,就會透過「已延遲載入最大內容繪製圖片」稽核項目醒目標示:

避免延遲載入 LCP 圖片

辨別 CLS 貢獻

累計版面配置位移是視覺穩定性的評估指標。它會量化網頁內容在視覺上的位移程度。Lighthouse 提供名為「避免大型版面配置位移」的稽核,可用於偵錯 CLS。

這項稽核會醒目顯示貢獻最多頁面位移的 DOM 元素,左側的「元素」欄中會列出這些 DOM 元素清單,右側則會顯示這些 DOM 對整體 CLS 所貢獻的內容。

Lighthouse 中的「避免大量版面配置轉移」稽核功能會標示出導致 CLS 的相關 DOM 節點

多虧新的 Lighthouse 元素螢幕截圖功能,我們可以看到稽核中記錄的主要元素預覽,還可以透過點擊縮放功能取得更清晰的檢視畫面:

按一下元素螢幕截圖即可展開

對於負載後的 CLS,持續使用矩形來視覺化哪些元素對 CLS 的影響最大,可能會有價值。這項功能可在第三方工具中找到,例如 SpeedCurve 的 Core Web Vitals 資訊主頁,以及我喜歡使用的 Defaced 的版面配置位移 GIF 產生器

版面配置位移產生器會標示位移

Search Console 的 Core Web Vitals 報表其實是為整個網站的版面配置位移問題彙整而成。如此一來,我就能查看網站上 CLS 較高的網頁類型 (在本例中,我有助於自己確認需要花時間使用哪些範本):

Search Console 顯示 CLS 問題

從無尺寸圖片中找出 CLS

如要「限制」因無尺寸圖片而導致的累計版面配置位移,請在圖片和影片元素中加入寬度和高度大小屬性。這個方法可確保瀏覽器在圖片載入時,可在文件中分配正確的空間大小。

針對沒有明確寬度和高度的圖片元素進行稽核

請參閱設定圖片的高度和寬度非常重要一文,深入瞭解在考量圖片尺寸和長寬比的重要性。

辨識廣告中的 CLS

透過 Lighthouse 發布商廣告,您可以發掘改善網頁廣告載入體驗的機會,包括對版面配置位移的貢獻,以及可能會推遲使用者網頁使用時間的長時間工作。在 Lighthouse 中,您可以透過社群外掛程式啟用此功能。

廣告相關稽核項目,強調縮短請求時間和版面配置位移的機會

請注意,廣告是造成網站版面配置變動的最大因素之一。請務必:

  • 將非頁緣固定廣告放在可視區域頂端附近時必須謹慎行事
  • 為廣告版位保留盡可能大的尺寸,避免出現位移

避免使用非合成動畫

如果 JavaScript 工作量大,導致主執行緒繁忙,未合成的動畫在低階裝置上可能會呈現為卡頓狀態。這類動畫可能會導致版面配置移位。

如果 Chrome 發現動畫無法合成,就會將這項資訊回報至 LightHouse 讀取的開發人員工具追蹤記錄,讓 LightHouse 列出哪些含有動畫的元素未合成,以及原因。您可以在「避免使用未合成的動畫」稽核項目中找到這些動畫。

透過稽核避免使用非合成動畫

檢查首次輸入延遲時間 / 總封鎖時間 / 長時間工作

首次輸入延遲時間:從使用者首次與網頁互動起算 (例如點選連結、輕觸按鈕或使用自訂的 JavaScript 驅動控制項),到瀏覽器實際能夠開始處理事件處理常式,以回應該互動所需的時間。長時間的 JavaScript 工作可能會影響這項指標,以及這項指標的代理值「總封鎖時間」。

審查避免長時間在主執行緒上執行的工作

Lighthouse 內含「避免長主執行緒工作」稽核,其中會列出主執行緒上最長的工作。這有助於找出造成輸入延遲最壞的貢獻者。在左側欄中,我們可以看到負責長主執行緒工作之指令碼的網址。

在右側,我們可以看到這些工作的時間長度。提醒您,長時間工作是指執行時間超過 50 毫秒的工作。結果會認為封鎖主執行緒的時間夠長,而影響影格速率或輸入延遲時間。

如果您考慮使用第三方服務進行監控,我也很喜歡 Calibre 的「主執行緒執行時間軸」視覺化呈現這些成本,可醒目顯示父項和子項任務,因為這會影響到影響互動的長時間工作。

Calibre 的主執行緒執行時間軸

封鎖網路要求,在 Lighthouse 中查看影響

Chrome 開發人員工具支援封鎖網路要求,以便查看個別資源遭移除或無法使用所造成的影響。這有助於瞭解個別指令碼 (例如第三方嵌入或追蹤器) 對總阻斷時間 (TBT) 和互動時間等指標的影響。

網路要求封鎖功能也適用於 Lighthouse!我們來簡單介紹一下網站的 Lighthouse 報表效能分數為 63/100,TBT 為 400 毫秒。深入研究程式碼後,我們發現這個網站在 Chrome 中載入 Intersection Observer polyfill,但這並非必要。讓我們封鎖它!

網路要求封鎖

我們可以按一下開發人員工具網路面板中的指令碼,然後按一下 Block Request URL 來封鎖指令碼。我們會在這裡為 Intersection Observer polyfill 執行這項操作。

在開發人員工具中封鎖要求網址

接下來,我們可以重新執行 Lighthouse。這次我們可以看到成效分數有所提升 (70/100),因為總阻斷時間 (400 毫秒 => 300 毫秒)。

封鎖耗用大量資源的網路要求後的畫面

使用門面元件取代成本高昂的第三方嵌入功能

常見的使用第三方資源,將影片、社群媒體貼文或小工具嵌入頁面中。根據預設,大部分的嵌入內容會立即載入,且可能會附帶會對使用者體驗造成負面影響的酬載。如果第三方服務不重要 (例如使用者需要捲動畫面才能看到第三方服務),這麼做就會造成浪費。

改善這類小工具效能的一種模式,就是在使用者互動時延後載入小工具。方法是轉譯小工具的輕量預覽 (門面),並只在使用者互動時載入完整版本。Lighthouse 的稽核功能會推薦可使用門面元件延遲載入的第三方資源,例如 YouTube 嵌入影片。

稽核重點指出,可以替換部分昂貴的第三方資源

提醒你,Lighthouse 會醒目顯示第三方程式碼,阻斷主執行緒的時間超過 250 毫秒。這可能會揭露所有第三方指令碼 (包括 Google 撰寫的指令碼),如果這些指令碼所算繪的內容需要捲動才能查看,則可能需要改進延遲或延後載入。

降低第三方 JavaScript 稽核的費用

超越 Core Web Vitals 的資料

除了醒目顯示 Core Web Vitals 指標外,新版 Lighthouse 和 PageSpeed Insights 也會提供具體指引,協助您在啟用來源地圖的情況下,改善大量使用 JavaScript 的網頁應用程式的載入速度。

其中包括減少對網頁 JavaScript 成本的稽核集合,例如減少對 polyfill 的依賴,以及對使用者體驗而言可能不需要的重複項目。

如要進一步瞭解 Core Web Vitals 工具,請密切留意 Lighthouse 團隊的 Twitter 帳戶和 DevTools 的新功能

主頁橫幅,由 Mercedes MehlingUnsplash 上提供。