Core Web Vitals 效能優化專家
建立摘要
LCP 優化 LCP CLS INP

找出真正的 LCP 元素:3 種工具實測對比(DevTools / Lighthouse / JavaScript)

如何找出你網站真正的 LCP 元素?本文實測 DevTools、Lighthouse 與 JavaScript API 三種方法,包含決策流程圖、行動裝置注意事項與常見問答。掌握精確識別技巧,優化才不會白做工。

陳

陳柏翰

網站效能工程師

15 分鐘閱讀
找出真正的 LCP 元素:3 種工具實測對比(DevTools / Lighthouse / JavaScript)
這篇內容要解決什麼?:找出真正的 LCP 元素:3 種工具實測對比(DevTools / Lighthouse / JavaScript)
找出真正的 LCP 元素:3 種工具實測對比(DevTools / Lighthouse / JavaScript)

一個讓我們團隊困惑了兩週的 LCP 問題

我們曾接手一個電商網站的效能優化專案。團隊按照直覺,花費大量時間壓縮首頁 Hero 圖片的檔案大小、嘗試不同的圖片格式,但 Lighthouse 分數中的「最大內容繪製時間 (LCP)」依然停留在「需要改善」的區間。我們的直覺反應是「圖片下載還是不夠快」,但真實情況是,當我們最終使用 Chrome DevTools 進行一次完整的載入錄製後,才發現瀏覽器判定的 LCP 元素根本不是那張 Hero 圖片,而是一個大型的文字區塊。真正的問題根源在於字型載入延遲,導致這個文字節點的繪製時間被拉長。這個經驗給了我們一個深刻的教訓:在採取任何優化行動之前,第一步必須是精確地找出網站上那個真正的「LCP 元素」,否則極有可能白費工夫。

三種工具實測:DevTools vs. Lighthouse vs. JavaScript API

三種主要識別方法在關鍵維度上有何差異?:每種工具都有其優勢與限制,理解差異才能善用工具。
每種工具都有其優勢與限制,理解差異才能善用工具。
如何判斷 找出真正的 LCP 元素:3 種工具實測對比(DevTools / Lighthouse / JavaScript)?:先確認條件,再選擇處理路徑
先確認條件,再選擇處理路徑

要找出 LCP 元素,我們主要依賴三種工具:Chrome DevTools 的 Performance 面板、Lighthouse 稽核報告,以及基於 PerformanceObserver 的 JavaScript API。這三者各有其適用場景與限制,理解其差異是高效診斷的關鍵。以下我們將結合實際操作步驟,對比它們的特性。

Chrome DevTools (Performance 面板) 提供了最詳盡的時序資訊,是開發階段深度診斷的首選。其標準流程為:開啟 DevTools(F12)並切換至 Performance 面板,為了模擬真實環境,建議開啟 CPU throttling(例如 4 倍)和 Network throttling(Fast 3G)。點擊錄製後重新整理頁面,載入完成後停止錄製。在錄製結果的 Timings 區域,找到橘色的「LCP」標記並點擊它,下方的 Summary 面板會顯示一個 Node 連結,點擊即可跳轉至 Elements 面板,準確定位到對應的 DOM 節點。這種方法的優點是能觀察到 LCP candidate 的更新過程,並精確對應到 DOM,缺點是操作步驟較多,且需要一定的解讀經驗。

Lighthouse 與 PageSpeed Insights (PSI) 則提供了更快速、自動化的診斷。在 Lighthouse 的 Performance 稽核結果中,展開「Largest Contentful Paint」項目,下方會列出「Largest Contentful Paint element」,直接顯示該元素的 HTML 片段。PSI 在其報告的「診斷」區域,同樣會列出「Largest Contentful Paint element」的描述。這兩種工具的優點是速度快、結果一目了然,且 PSI 還能同時提供來自真實使用者的 Field Data。但它們的缺點在於,Lighthouse 是在固定的模擬條件(實驗室數據)下運行,你網站在真實世界中、不同設備和網速下的 LCP 元素,可能與此不同。因此,它們是快速定位的好起點,但不能完全依賴其結果作為唯一的判斷依據。

JavaScript (PerformanceObserver API) 則適合用於監控與自動化測試。透過以下代碼片段,你可以在瀏覽器端持續追蹤 LCP 元素:const observer = new PerformanceObserver((list) => { const entries = list.getEntries(); const lastEntry = entries[entries.length - 1]; console.log('LCP element:', lastEntry.element); }); observer.observe({ type: 'largest-contentful-paint', buffered: true });。設定 buffered: true 能確保 observer 捕獲到初始化之前已發出的 entry。此方法的優點是可以程式化地收集真實使用者(Real User Monitoring, RUM)數據,了解 LCP 元素在不同條件下的分佈。缺點是它只提供數據,需要結合其他工具才能進行深度的成因分析。對於追求長期效能追蹤的團隊,這是最關鍵的數據來源。

實戰流程圖:我該用哪個工具?

面對不同的工作情境與需求,選擇正確的工具能大幅提升效率。根據你的角色與目的,可以參考以下決策路徑:如果你是開發者,需要深入分析一次具體載入過程中各資源的時序關係,以便進行深度除錯,那麼 Chrome DevTools Performance 面板是你的最佳選擇。如果你是產品經理或 SEO 專家,需要快速獲取一個頁面在模擬環境下的綜合健康報告,並理解它與真實用戶數據(Field Data)的差異,那麼 PageSpeed Insights 會是更合適的工具。如果你正在建立或維運一個自動化監控系統,需要持續收集真實用戶的 LCP 元素數據以進行長期趨勢分析,那麼整合 JavaScript PerformanceObserver API 到你的 RUM 方案中是必要的。

要注意的是,這些工具並非互斥,最佳實踐是組合使用。一個常見的流程是:先用 PSI 快速掃描,獲得一個初步的 LCP 元素候選者;然後用 DevTools 針對這個元素進行深度錄製,分析其延遲的具體子階段(TTFB、資源載入延遲、資源載入時間、元素算繪延遲);最後,透過 PerformanceObserver 收集真實用戶數據,驗證你的優化是否在真實環境中生效。

特別注意:行動裝置上的 LCP 元素可能是另一個

識別出 LCP 元素後,下一步的優化思路是什麼?:LCP 元素識別是起點,後續優化需根據元素類型(圖片/文字/影片)採取不同策略。
LCP 元素識別是起點,後續優化需根據元素類型(圖片/文字/影片)採取不同策略。

許多開發者容易忽略的一個關鍵點是:在行動裝置(Mobile)上,LCP 元素的判定可能與桌面裝置(Desktop)完全不同。這主要歸因於視口尺寸的差異。瀏覽器判定 LCP 元素時,依據的是其在視口內的「可見面積」。在較小的行動視口中,原先在桌面版首屏是背景圖片的元素,可能因為視口縮小而不再佔據最大可見面積;反之,一個原本在桌面版不算大的文字區塊,可能在行動版上成為視口內最大的元素。因此,永遠不要只在桌面版上確認 LCP 元素後就停止。務必使用 Chrome DevTools 的設備模擬功能(Device Toolbar),切換到常見的手機型號(如 iPhone 或 Pixel)與網路條件(如 Fast 3G),重新進行錄製。這能幫你發現那些只在行動版上出現的、截然不同的 LCP 瓶頸,確保你的優化策略能覆蓋所有主流用戶群體。在台灣,移動裝置使用率極高,這一步驟尤其重要,忽略它可能意味著你漏掉了大部分真實用戶的體驗問題。若要深入交流行動版效能優化的實戰經驗,也推薦關注台灣活躍的技術社群 Web Performance Taiwan,上面有許多本地開發者分享的真實案例與討論。

實驗結果:我們這樣將 LCP 時間顯著縮短

回到我們最初的案例。在精確識別出 LCP 元素是文字區塊後,我們依照以下三個步驟依序執行,逐步收斂問題並驗證成效:

  1. 瓶頸拆解:我們進一步使用 Performance Insights 面板,將 LCP 時間拆分為 TTFB、資源載入延遲、資源載入時間、元素算繪延遲四個子階段,發現「元素算繪延遲 (Render Delay)」佔據了大部分時間。
  2. 根源定位:結合「文字區塊 LCP」的線索,我們迅速定位到問題根源:網頁使用的一款自訂字型在載入時阻塞了渲染。
  3. 採取優化與驗證:針對此根源,我們在字型的 CSS 規則中加入 font-display: swap。此設定允許瀏覽器在自訂字型下載完成前,先使用系統備選字型進行渲染,確保文字內容能立即可見,並進行 A/B 對比驗證。

我們同步記錄了優化前後的觀察對比:優化前,Lighthouse 報告中的 LCP 時間為「需要改善」等級,Performance 錄製中 LCP 元素對應文字節點,且 Render Delay 時間較長;優化後,相同模擬條件下,LCP 時間明顯下降至「良好」等級,同一個文字節點的 Render Delay 大幅縮減。更關鍵的是,在後續收集的真實用戶數據中,也觀察到該頁面的 LCP 指標有顯著改善。這個實驗完整體現了「先準確識別,再針對性優化」的工作流價值。

常見問題 (FAQ)

LCP 元素是什麼?我可以自己指定嗎?

LCP(最大內容繪製)元素是瀏覽器在頁面載入過程中,自動判定的、視口內面積最大的主要可見內容對應的 DOM 節點。它是 Largest Contentful Paint 指標的計算基礎。你不能通過代碼或設定「指定」某個元素成為 LCP 元素,它完全由瀏覽器根據頁面載入時的實際渲染結果動態決定。

為什麼我優化了圖片,LCP 分數還是沒變?

這很可能意味著你誤判了 LCP 元素。如本文實驗案例所示,真正的 LCP 元素可能不是圖片,而是文字區塊、影片封面圖(poster)或 CSS 背景圖。不同元素類型的瓶頸點不同:圖片問題可能出在下載,文字問題可能出在字型載入。請務必先使用 DevTools 或 Lighthouse 確認當前的 LCP 元素是什麼,再決定優化方向。

DevTools 和 Lighthouse 顯示的 LCP 元素不同,以哪個為準?

兩者顯示不同是正常現象,因為它們的數據來源不同。Lighthouse 是在固定模擬條件下的實驗室測試,結果反映的是「該特定條件下」最可能的 LCP 元素。DevTools(在你真實的桌面環境錄製)和 PerformanceObserver API(收集真實用戶數據)更接近實際情況。建議以 DevTools 或真實用戶數據(Field Data)為主要依據進行深度優化,而將 Lighthouse 結果作為快速篩查和基準測試的參考。

頁面加載時有多個元素看起來都很大,會有「多個」LCP 元素嗎?

瀏覽器會在載入過程中持續追蹤並更新最大的內容候選者。在 DevTools 的 Performance 錄製中,你可能會看到多個被標記為「LCP」的 PerformanceEntry,但它們代表的是不同時刻的候選者。最終的、決定性的 LCP 元素只有一個,通常是使用者發生互動(如點擊、滾動)前最後一個被記錄的最大內容繪製完成事件所對應的那個元素。

找到 LCP 元素後,下一步具體該做什麼?

找到元素只是第一步,下一步是分析其延遲的「子階段」。將 LCP 時間拆分為 TTFB、資源載入延遲、資源載入時間、元素算繪延遲四個部分。找出最長的那個子階段,就能精準定位瓶頸。例如,如果瓶頸是資源載入延遲,對於圖片元素,可以考慮添加 fetchpriority="high" 或 rel="preload";如果是文字元素的算繪延遲,則需要檢查字型載入策略(如使用 font-display: swap)或渲染阻塞資源。詳細的優化步驟可參閱 LCP 優化指南。

陳

陳柏翰

網站效能工程師

專注前端效能優化超過 8 年,曾協助電商、媒體和 SaaS 平台改善 Core Web Vitals 指標。相信效能優化應該基於數據而非直覺。

50+ 效能實驗
8 年 前端經驗
200+ 優化案例

想看更多?

探索所有效能實驗

查看完整的實驗報告列表,找到你需要的效能優化方案。

所有實驗報告 免費效能診斷