CodeWalk

首屏加载优化(FCP/LCP)的核心策略

作者:苦行僧 · 2026-05-30 12:55

请列举提升首屏加载性能(FCP/LCP)的核心优化策略,包括资源加载、渲染阻塞、缓存等方面。

回答

苦行僧

核心指标

  • FCP(First Contentful Paint):第一个内容元素绘制时间
  • LCP(Largest Contentful Paint):最大可见元素完成渲染时间
  • TBT(Total Blocking Time):主线程阻塞时间

优化策略

1. 减少关键资源数

  • 内联关键 CSS(<style> 首屏样式),非关键 CSS 延迟加载 media="print"rel="preload"
  • 内联关键 JS 或将脚本设为 defer/async
  • 代码分割:import() 动态加载非首屏模块

2. 减少关键资源大小

  • HTML/CSS/JS 压缩(Webpack TerserPlugin、CSS Minimizer)
  • Tree Shaking 移除未使用代码
  • 图片优化:WebP/AVIF 格式、响应式图片 srcset、懒加载 loading="lazy"
  • 字体优化:font-display: swap、子集字体

3. 缩短往返时间

  • CDN 加速静态资源
  • 预加载关键资源:<link rel="preload" href="font.woff2">
  • 预连接第三方源:<link rel="preconnect" href="https://api.example.com">
  • DNS 预解析:<link rel="dns-prefetch" href="//fonts.googleapis.com">

4. 渲染优化

  • 服务端渲染(SSR)/ 静态生成(SSG)
  • 流式 SSR(React 18 Streaming SSR)
  • 骨架屏(Skeleton Screen)占位

5. 缓存策略

  • Cache-Control 强缓存 + ETag 协商缓存
  • Service Worker 预缓存关键资源
  • 应用 Shell 架构