首屏优化怎么做?

37 阅读2分钟

一、先给一句总纲(面试开场)

首屏优化的核心目标是 尽快让用户看到并可交互的内容,我一般从 资源加载、代码拆分、渲染策略、网络与缓存 四个层面来做。


二、首屏慢的本质是什么?(一句话点透)

HTML 回来慢
JS 解析执行慢
首屏资源太多
阻塞渲染

三、首屏优化的四大方向(重点)


① 资源加载层(最直接、效果明显)

1️⃣ 减少首屏资源体积

  • 图片压缩(WebP)
  • 移除无用 JS / CSS
  • Tree Shaking

👉 首屏只加载“必须的”


2️⃣ 代码拆分(非常重要)

React 示例:

const Home = React.lazy(() => import('./Home'));
  • 路由级拆分
  • 组件级拆分

3️⃣ JS / CSS 加载优化

  • JS 放 defer
  • 非关键 CSS 延迟加载
  • 第三方脚本延后

② 渲染层(前端重点)

4️⃣ 减少首屏渲染内容

  • 首屏只渲染可视区域
  • 非首屏内容懒加载
const Chart = lazy(() => import('./Chart'));

5️⃣ Skeleton 骨架屏(体验加分)

  • 页面结构先出来
  • 数据慢也不白屏

6️⃣ 虚拟列表(首屏 + 滚动)

  • 表格 / 列表只渲染可视区域

③ 网络 & 服务端(进阶)

7️⃣ 接口优化

  • 合并接口
  • 首屏接口优先
  • 并行请求

8️⃣ CDN + HTTP2

  • 静态资源走 CDN
  • HTTP/2 多路复用

9️⃣ 缓存策略

  • 强缓存 / 协商缓存
  • LocalStorage / IndexedDB

④ 架构层(高级)

🔟 SSR / SSG(大杀器)

  • Next.js
  • 首屏 HTML 直接可见

1️⃣1️⃣ 预加载 / 预取

<link rel="preload" />
<link rel="prefetch" />

四、你可以举的“真实优化案例”(强烈建议背)

在一个性能查询页面中,首屏需要展示表格和图表,最初首屏时间在 4 秒以上。
后来我们通过 路由拆分、图表组件懒加载、首屏只渲染表格、骨架屏占位,将首屏时间优化到 2 秒以内。


五、面试官追问你也不慌(常见追问)

Q1:怎么衡量首屏?

  • FP
  • FCP
  • LCP

Q2:首屏 JS 很大怎么办?

  • 拆包
  • 懒加载
  • SSR

六、30 秒极速版(背这个)

首屏优化主要从资源体积、代码拆分、渲染策略和缓存四个方向做。通过懒加载、路由拆分、骨架屏、虚拟列表、接口并行和 CDN 缓存,减少首屏阻塞资源,提升首屏可见和可交互时间。