網站跑分滿江紅?資深工程師帶你拆解 Core Web Vitals,LCP/CLS/FID 調教實戰全攻略

2025/07/16 | 架構與效能優化

網站跑分滿江紅?資深工程師帶你拆解 Core Web Vitals,LCP/CLS/FID 調教實戰全攻略

哈囉,我是浪花科技的 Eric。身為一個天天跟 WordPress 程式碼打交道的工程師,最常被客戶問到的問題之一,大概就是:「Eric,為什麼我的網站用 Google PageSpeed Insights 測出來分數這麼難看?一片紅字,是不是網站快掛了?」

每次看到客戶傳來的滿江紅報告,我都能感受到那份焦慮。但別擔心,今天這篇文章就是要帶你撥開迷霧,深入理解這些分數背後的意義,並動手進行 WordPress 速度優化。我們不談那些虛無飄渺的理論,只講能讓你網站「有感」變快的實戰技巧,特別是針對 Google 最在意的三大指標:LCP、CLS、和 FID

說真的,網站效能優化已經不是選修課,而是必修學分了。它不僅僅是為了討好 Google 的演算法,更是為了尊重每一位訪客寶貴的時間。一個卡頓、遲緩的網站,只會讓使用者毫不猶豫地按下上一頁。好了,囉嗦完畢,我們捲起袖子,開始幹活吧!

什麼是網站體驗核心指標 (Core Web Vitals)?為什麼它重要到 Google 都在意?

首先,我們得搞懂我們到底在跟誰「作戰」。Core Web Vitals(簡稱 CWV)是 Google 提出來的一組指標,用來衡量使用者在網頁上的實際體驗。你可以把它想像成 Google 派出的秘密客,專門評估你網站的「待客之道」。它主要由三個核心成員組成:

  • LCP (Largest Contentful Paint) – 最大內容繪製:簡單說,就是使用者進到你的頁面後,畫面上「最大塊」的圖片或文字區塊需要多久才能完整顯示出來。這代表了使用者感知到的「載入速度」。
  • CLS (Cumulative Layout Shift) – 累計版面配置位移:你有過這種經驗嗎?正要點擊一個按鈕,突然一個廣告或圖片載入,把按鈕擠下去,結果點到別的東西。這種惱人的「畫面跳動」就是 CLS 在測量的東西,它代表了「視覺穩定性」。
  • FID (First Input Delay) – 首次輸入延遲:當使用者第一次與你的頁面互動(例如點擊連結、按按鈕)時,瀏覽器需要多久才能開始處理這個動作。這代表了網站的「互動性」。

最近 Google 也開始推廣 FID 的接班人——INP (Interaction to Next Paint),它衡量的是整個互動過程的延遲,比 FID 更全面。但別緊張,優化 FID 的基本功,同樣能為 INP 打下良好基礎。

為什麼這些指標這麼重要?因為 Google 已經公開表示,Core Web Vitals 是搜尋排名的因素之一。也就是說,一個使用者體驗好的網站,更有機會獲得好的排名。這就是為什麼我們必須嚴肅看待 WordPress 速度優化:LCP / CLS / FID 調教 這件事。

LCP 拖垮速度?Largest Contentful Paint 優化實戰

LCP 通常是效能報告中最顯眼的紅字來源。一個理想的 LCP 時間應該在 2.5 秒以內。如果你的網站超過 4 秒,那使用者大概已經等到不耐煩了。LCP 過慢,通常代表著你的「第一印象」很差。

揪出 LCP 的元兇:到底誰是那個「最大」的元素?

動手優化前,得先找到問題點。你可以使用 Google PageSpeed Insights 報告,它會明確告訴你哪個元素是 LCP 元兇。通常不是首圖 (Hero Image),就是大標題。在 Chrome 開發者工具 (DevTools) 的「Performance」面板中,你也可以錄製頁面載入過程,找到 LCP 事件,確認是哪個元素。

LCP 優化四大絕招

找到元兇後,我們就可以對症下藥了。以下是我在實務中最常用的幾招:

  • 1. 優化伺服器回應時間 (TTFB):地基不穩,蓋什麼樓都危險。如果你的主機本身反應就慢(Time to First Byte, TTFB 過長),後面的優化做得再好都沒用。這也是我最常跟客戶囉嗦的一點:拜託不要再用那些便宜到不可思議的共享主機了!選擇一個優質的 WordPress 主機、設定頁面快取 (Page Caching)、使用 CDN 服務,是降低 TTFB 的根本之道。
  • 2. 圖片優化是重中之重:LCP 元素十之八九是圖片。請務必做到:
    • 正確的尺寸:不要上傳一張 4000px 寬的圖片,卻只在 800px 寬的欄位顯示。這是在謀殺使用者的流量和耐心。
    • 有效的壓縮:使用像 TinyPNG 這樣的工具,在不犧牲太多畫質的前提下,大幅減少圖片檔案大小。
    • 現代化的格式:盡量使用 WebP 或 AVIF 格式,它們的壓縮效率遠高於傳統的 JPG 或 PNG。
  • 3. 延遲載入非關鍵 CSS 與 JavaScript:瀏覽器在渲染頁面時,如果遇到 CSS 或 JS 檔案,會停下來等它們下載並執行完畢,這就是所謂的「渲染阻塞 (Render-blocking)」。我們需要讓關鍵的 CSS(也就是讓頁面首屏能看的樣式)優先載入,而非關鍵的 CSS 和 JavaScript 則可以延後。許多快取外掛都有提供這類功能,或者你也可以手動為 script 標籤加上 defer 屬性。
    <script src="my-script.js" defer></script>
  • 4. 預載入 (Preload) 關鍵資源:對於 LCP 元素(例如那張最重要的首圖),我們可以給瀏覽器一個「提示」,告訴它:「嘿!這個資源很重要,請優先下載!」這可以透過在 <head> 中加入 <link rel="preload"> 來實現。
    <!-- 預載入 LCP 圖片 -->
    <link rel="preload" as="image" href="/path/to/your-lcp-image.webp">

頁面亂跳逼走訪客?Cumulative Layout Shift (CLS) 調教指南

CLS 的理想分數應該低於 0.1。它雖然不像 LCP 那樣直接影響載入速度,卻嚴重破壞使用者體驗。一個高 CLS 分數的網站,會給人一種「不專業」、「不可靠」的感覺。

CLS 的常見罪魁禍首

版面位移通常是由於瀏覽器一開始不知道某些元素「佔多大空間」所造成的。

  • 沒有尺寸的圖片或影片:這是最常見的原因。圖片載入完成後,突然「撐開」一個空間,把下面的內容都擠下去了。
  • 動態載入的廣告或 iframe:廣告商的腳本通常不會告訴你廣告多大,載入後就直接插入頁面,造成災難性的版面位移。
  • 網頁字型 (Web Fonts) 造成的閃爍:當自訂字型還在下載時,瀏覽器可能會先用系統預設字型顯示文字,等自訂字型載入後再替換,這個替換過程可能因為字體大小不同而導致版面跳動。
  • 在現有內容上方動態插入內容:例如一個「訂閱我們的電子報!」的橫幅,在頁面載入後才用 JavaScript 插入到頂部。

根治 CLS 的處方籤

幸運的是,CLS 相對容易修復,核心概念就是「事先預留空間」。

  • 永遠為圖片和影片設定 widthheight 屬性:這是最簡單也最有效的解法。只要在 <img> 標籤上加上寬高,瀏覽器在圖片下載完成前,就會先幫你把位置佔好。
    <!-- 瀏覽器會根據寬高比 16:9 預留空間 -->
    <img src="image.jpg" width="1280" height="720" alt="一個有設定寬高的好圖片" style="width: 100%; height: auto;">
  • 為廣告和嵌入內容預留空間:如果你知道廣告區塊的大小,可以用 CSS 設定一個容器 div,並給它一個 min-height,確保它在廣告載入前就佔據了足夠的空間。
  • 優化字型載入策略:在你的 @font-face 規則中加入 font-display: swap;。這會讓瀏覽器在自訂字型載入完成前,先用備用字型顯示文字,減少文字隱形的時間。同時,也可以預載入重要的字型檔案。

點擊沒反應?First Input Delay (FID) 與 INP 互動優化

理想的 FID 應該低於 100 毫秒。當使用者點擊按鈕卻感覺到「延遲」、「卡頓」,背後的主因通常是瀏覽器的主執行緒 (Main Thread) 太忙了,沒空理你。

是什麼佔用了你的瀏覽器主執行緒?

主執行緒就像一個單線道的工廠作業員,他要負責處理 JavaScript、渲染畫面、回應使用者操作等所有事情。如果他正在處理一個非常耗時的 JavaScript 任務,就沒辦法回應你的點擊了。

  • 冗長且複雜的 JavaScript 執行:一個執行時間超過 50ms 的 JavaScript 任務,就被稱為「長任務 (Long Task)」。過多的長任務是造成 FID/INP 過高的主因。
  • 巨大的 JS 檔案:瀏覽器需要時間去下載、解析和編譯這些檔案。
  • 過多的第三方腳本:你裝的 Facebook Pixel、Google Analytics、線上客服外掛… 每一個都在搶佔主執行緒的資源。這也是我常跟客戶唸的,裝外掛前請三思,真的每個都需要嗎?

釋放主執行緒,讓網站「動」起來

優化 FID/INP 的核心就是「別讓主執行緒太忙」。

  • 拆分長任務 (Long Tasks):將一個龐大的 JavaScript 任務,切分成數個小任務,並透過 setTimeout 來排程執行。這樣可以在任務的空檔,讓瀏覽器有機會去處理使用者的輸入。
  • 延遲載入非必要的 JavaScript:跟優化 LCP 的概念一樣,不是所有 JS 都需要在頁面一載入就執行。例如,處理表單驗證的腳本,只有在使用者真的開始填表單時才需要。同樣地,使用 defer 屬性是你的好朋友。
  • 減少第三方腳本的依賴:定期審視你的 WordPress 網站安裝了哪些外掛和第三方追蹤碼。每個腳本都會帶來效能成本。問問自己:「這個功能帶來的價值,是否值得犧牲網站的互動性?」

總結:WordPress 速度優化是一場持續的旅程

搞定 WordPress 速度優化,特別是針對 LCP / CLS / FID 的調教,絕對不是安裝一個外掛就能一勞永逸的。它更像是一場結合了技術偵錯、資源管理與使用者體驗思維的持續性工程。

從伺服器 TTFB 的基礎建設,到 LCP 的圖片與資源載入策略,再到 CLS 的版面穩定性,最後是 FID/INP 的 JavaScript 執行效率,每一個環節都息息相關。今天我們分享的,是你在面對 PageSpeed Insights 紅字時,最應該優先檢查與動手的方向。

我知道,這其中涉及的技術細節可能讓你感到有些頭大。沒關係,這正是浪花科技存在的價值。如果你的團隊希望專注在核心業務上,而將網站效能這個燒腦的任務交給專業的工程師團隊,我們非常樂意為你服務。我們擅長深入程式碼層級,找出真正的效能瓶頸,並打造出既快速又穩定的 WordPress 網站。

準備好讓你的網站從滿江紅變成一片綠了嗎?立即聯繫我們,讓我們聊聊如何為你的網站進行一次徹底的健康檢查與效能升級!

延伸閱讀

常見問題 (FAQ)

Q1: Core Web Vitals 分數要達到多少才算「良好」?

A1: 根據 Google 的標準,「良好」的門檻分別是:LCP (最大內容繪製) 小於 2.5 秒;CLS (累計版面配置位移) 小於 0.1;FID (首次輸入延遲) 小於 100 毫秒。而新的指標 INP (互動至下一次繪製) 則建議小於 200 毫秒。能達到這些標準,代表你的網站提供了相當不錯的使用者體驗。

Q2: 我已經裝了 WP Rocket 或 LiteSpeed Cache 這些速度優化外掛,為什麼分數還是很差?

A2: 這是一個非常常見的迷思。優化外掛是非常強大的「工具」,但它們不是「萬靈丹」。它們可以幫你處理快取、壓縮檔案等任務,但無法解決根本性的問題。例如,如果你的主機本身 TTFB 就很慢、你上傳了未經壓縮的超大圖片、或是你的佈景主題寫了很沒效率的 JavaScript,這些都不是單靠外掛就能完全修復的。優化需要一個全面的策略,從主機、圖片、程式碼品質到外掛設定,缺一不可。

Q3: FID 和新的 INP 指標有什麼不同?我應該先優化哪一個?

A3: 簡單來說,FID 只測量使用者「第一次」互動的「輸入延遲」,也就是瀏覽器開始處理事件前的等待時間。而 INP 則更全面,它會觀察頁面上的「所有」互動,並測量從互動開始到畫面上出現視覺反饋的「完整」時間。不過,兩者變差的根本原因通常是相同的:就是因為 JavaScript 任務太繁重,佔用了主執行緒。因此,你完全可以從優化 FID 的策略著手,例如減少、延遲、拆分 JavaScript,這些作法同樣會直接改善你的 INP 分數。

 
立即諮詢,索取免費1年網站保固