FE Interview Hub
Web Vitals進階

有什麼可以優化前端效能的方法?

AI 練習作答

前端效能優化總覽

效能優化可以沿著使用者感知到內容的三個階段思考:

  1. 載入(Loading):資源多快能下載並可用。
  2. 渲染(Rendering):瀏覽器多快能把畫面畫出來。
  3. 執行與互動(Runtime / Interaction):JS 執行、互動是否流暢。

對應 Core Web Vitals:LCP(載入)、CLS(視覺穩定)、INP(互動)。

一、網路 / 資源載入

  • 壓縮:啟用 Gzip / Brotli;圖片使用 WebP、AVIF;SVG 壓縮。
  • HTTP/2、HTTP/3:多工、減少連線握手。
  • CDN:就近提供靜態資源、邊緣快取。
  • HTTP 快取Cache-ControlETagimmutable 檔名帶 hash。
  • 預連線 / 預載
    • <link rel="preconnect"> 提早建立連線
    • <link rel="dns-prefetch"> 提早 DNS 查詢
    • <link rel="preload"> 預先下載關鍵資源(字型、LCP 圖片)
    • <link rel="prefetch"> 預抓下一頁資源
  • 圖片優化
    • 使用 srcset / <picture> 做 RWD
    • loading="lazy" 延遲載入
    • decoding="async"
    • 指定 width / height 避免 CLS

二、JavaScript 最佳化

  • Code Splitting:依路由 / 元件分割 chunk,只載入目前需要的程式碼。
  • Tree Shaking:移除未使用的 export。
  • Lazy Loadingimport() 動態載入、React lazy / Vue defineAsyncComponent
  • Minify / Compression:Terser、esbuild、SWC。
  • 避免阻塞主執行緒:長任務拆分、使用 requestIdleCallback、Web Worker 處理重算。
  • async / defer:外部 script 不阻塞 HTML 解析。
  • 移除未使用的 polyfill / 函式庫

三、CSS 最佳化

  • **關鍵 CSS(Critical CSS)**內嵌於 <head>,非關鍵 CSS 延遲載入。
  • 減少選擇器複雜度,避免深層後代選擇器。
  • 使用 contain: layout / paintcontent-visibility: auto 縮小渲染範圍。
  • 避免 @import(會阻塞下載)。

四、渲染效能

  • 使用 transform / opacity 做動畫(走 Composite,不觸發 Layout / Paint)。
  • 避免 layout thrashing(讀寫交替)。
  • 大列表使用虛擬滾動(react-window、vue-virtual-scroller)。
  • Debounce / Throttle 高頻事件(input、scroll、resize)。
  • 圖片、iframe 使用 loading="lazy"
  • will-change 提升合成層(但不可濫用)。

五、框架層(React / Vue)

  • React.memouseMemouseCallback 避免不必要 re-render。
  • Vue 使用 v-show vs v-if 依場景選擇;key 正確設定。
  • 長列表分頁 / 虛擬化。
  • SSR / SSG(Next.js、Nuxt)降低首次 LCP。
  • Islands Architecture / RSC 只水合需要互動的部分。

六、Web Vitals 各指標對應

指標 目標 主要手段
LCP ≤ 2.5s 預載 LCP 圖、壓圖、SSR、減少阻塞資源
CLS ≤ 0.1 指定 width/height、預留空間、字型 font-display: optional
INP ≤ 200ms 分割長任務、減少 JS、使用 Web Worker
FCP ≤ 1.8s 關鍵 CSS 內嵌、減少 render-blocking
TTFB ≤ 800ms CDN、邊緣運算、HTTP/2、更快的後端

七、監測與工具

  • Lighthouse / PageSpeed Insights
  • Chrome DevTools Performance / Coverage Panel
  • WebPageTest
  • web-vitals library(RUM 真實使用者監測)

小結

效能優化是系統工程,從網路 → 解析 → 執行 → 渲染每一層都能優化;實務上應先用 Lighthouse / Web Vitals 找出最大瓶頸,再針對性優化,而不是一次全做。

✦ AI 模擬面試

輸入你的答案,AI 即時分析精準度與改進空間

登入後即可使用 AI 評分