優化 CLS 提升網頁視覺穩定 用 Pagespeed 偵測修復佈局偏移

me
林彥成
2024-02-02 | 3 min.
文章目錄
  1. 1. 什麼是 Cumulative Layout Shift (CLS)?
  2. 2. Pagespeed 出現 CLS 問題
  3. 3. Cumulative Layout Shift (CLS) 修正技巧
  4. 4. 解決 CLS 問題工具
  5. 5. FAQ:CLS 效能優化常見問題
    1. 5.1. Q1:為什麼我修正了程式碼,PageSpeed 的 CLS 分數卻沒有馬上更新?
    2. 5.2. Q2:動態載入的廣告(如 AdSense)最容易導致 CLS,該如何預防?
    3. 5.3. Q3:字體 (Web Fonts) 為什麼也會引發佈局偏移?

什麼是 Cumulative Layout Shift (CLS)?

Cumulative Layout Shift (CLS, 累積佈局偏移) 是 Google Web Vitals (網站體驗核心指標) 中的一項重要指標,用於衡量 網頁視覺穩定性。它代表了網頁在載入過程中,元素位置發生非預期變動的程度。計算方式是測量所有不穩定元素在整個載入週期中的累積變化量。當 CLS 分數過高時,使用者常會遇到「正要點擊按鈕時內容卻跳開」的糟糕體驗,這不僅會降低轉換率,更會直接影響 Pagespeed 評分與 Google 搜尋引擎排名。優化 CLS 的核心在於為圖片、廣告與字體預留精確空間,確保網頁內容在渲染時維持結構穩定。


本文將深入介紹如何修正 Pagespeed 中影響網站性能提升Cumulative Layout Shift (CLS) 問題。先前 CLS 顯著影響頁面曝光總數,但修正成果難以即時評估,因為 Google 會根據實際蒐集到的使用者情境進行統計。透過本文,您將了解Cumulative Layout Shift 優化的關鍵步驟,掌握Pagespeed Insights 分析Web Vitals 改善等工具應用。

Pagespeed Insights 初始 CLS 評分 - 未通過

Pagespeed 出現 CLS 問題

  1. 透過 Pagespeed 的頁面進行量測,錯誤會直接顯示在網頁中,這是進行分析的重要環節。

    PageSpeed 分析工具傳送門

Pagespeed Insights 網頁性能分析結果

  1. 透過 Google Search Console 查看統計,這也是Web Vitals 改善的關鍵一步。

    Google Search Console 網頁體驗中心

Google Search Console 網站體驗核心指標 - CLS 數據
Google Search Console 網站體驗核心指標 - CLS 趨勢


Cumulative Layout Shift (CLS) 修正技巧

累積版面位移(Cumulative Layout Shift,CLS)是衡量網頁視覺穩定性的指標。修正 CLS 通常採取以下方法:

  1. 指定圖片尺寸: 避免在載入過程中因為圖片尺寸變化而導致的版面位移,這樣瀏覽器就能夠預留正確的空間,而不會導致位置變化。
  2. 預留空間: 廣告通常動態載入,確認載入順序後預留固定位置,確保廣告有固定位置和顯示大小。
  3. CSS Transform: 如果需要移動元素,使用 transform 代替修改 topleft 屬性,因為 transform 不會引發版面重排 (Relayout)。
  4. 字體載入優化: 確保字體或 Icon 的載入方式正確,避免發生「無樣式文字閃爍 (FOUT)」導致的空間跳動。
  5. 謹慎處理使用者操作: 確保在點擊、滾動等操作後產生的內容變化是可預期的。

解決 CLS 問題工具

以下是一些常用的工具來偵測和解決網頁中的 CLS 問題:

  • Google PageSpeed Insights: Google 提供的免費工具,分析性能並提供改進建議。
  • Chrome 開發者工具: 使用 Performance 面板錄製載入過程,並勾選 Layout Shifts 選項來觀察具體發生位移的區域。
  • Web Vitals Chrome Extension: 即時監控網頁的核心指標。
  • WebPageTest: 評估網頁加載速度與詳細性能瀑布圖。

最後小編是靠著瀏覽器的 Extension 找到發生問題的 DOM 元件,移除並且等待一段時間(通常 Google 統計需要 28 天的週期)讓實際統計數字慢慢下降才得到解決。這就是Cumulative Layout Shift 優化的實務經驗。

Chrome 擴充功能 Web Vitals 偵測問題 DOM 元素


FAQ:CLS 效能優化常見問題

Q1:為什麼我修正了程式碼,PageSpeed 的 CLS 分數卻沒有馬上更新?

A:PageSpeed Insights 的報告分為「模擬測試數據 (Lab Data)」與「實地數據 (Field Data)」。實地數據是根據過去 28 天真實使用者的體驗進行平均計算的。即便您修好了,也需要等待一段時間讓舊的差勁分數被新的優秀分數稀釋,統計結果才會慢慢轉綠。

Q2:動態載入的廣告(如 AdSense)最容易導致 CLS,該如何預防?

A:一定要預留固定比例的佔位空間 (Slot)。 不要讓廣告區塊的 heightauto。您應根據該廣告版位常見的尺寸(例如 300x250),在 CSS 中設定 min-height。即便廣告還沒載入,版面也不會因為內容突然插入而往下跳動。

Q3:字體 (Web Fonts) 為什麼也會引發佈局偏移?

A:當預設字體與 Web 字體的寬度不同時,字體載入完成後的替換過程會導致文字重新換行或段落高度變動。建議使用 font-display: swap; 搭配 CSS 的 size-adjust 屬性,來縮小預設字體與 Web 字體間的視覺差距。