一、先搞清楚优化什么(核心指标)
前端性能不是感觉,而是指标:
⭐ 核心 Web 指标(必须掌握)
-
FCP(First Contentful Paint):首次内容出现
-
LCP(Largest Contentful Paint):最大内容渲染(核心)
-
TTI(Time To Interactive):可交互时间
-
CLS(Cumulative Layout Shift):布局偏移
-
INP(Interaction to Next Paint):交互响应(新核心指标)
👉 你可以用:
-
Chrome DevTools
-
Lighthouse
-
WebPageTest
二、优化从哪里入手(5大方向)
1️⃣ 资源加载优化(最直接见效)
✔ 减少资源体积
-
Tree Shaking(ESM)
-
代码压缩(Terser)
-
图片压缩(WebP/AVIF)
✔ 按需加载(你项目里非常关键)
const Detail = React.lazy(() => import('./Detail'))
✔ CDN + 缓存
-
静态资源上 CDN
-
强缓存(Cache-Control)
-
协商缓存(ETag)
2️⃣ 渲染性能优化(React重点)
✔ 避免不必要渲染
export default React.memo(Component)
const memoValue = useMemo(() => compute(data), [data])
✔ key 使用正确
- 避免 index 作为 key(列表变化会炸)
✔ 大列表优化
👉 必会:虚拟列表
-
react-window
-
react-virtualized
3️⃣ 网络优化(很多人忽略)
✔ 减少请求数量
-
合并接口(BFF)
-
GraphQL(按需取数据)
✔ 提前加载
<link rel="preload" href="/main.js">
<link rel="prefetch" href="/next-page.js">
✔ HTTP2 / HTTP3
-
多路复用
-
头部压缩
4️⃣ 构建优化(工程化核心)
你现在做 React 项目,这块提升很大:
✔ 打包拆分
splitChunks: {
chunks: 'all'
}
✔ 分包策略
-
vendor(第三方库)
-
common(公共模块)
-
页面级拆分
✔ 构建工具升级
- Webpack → Vite(明显提升开发体验)
👉 推荐:
- Vite
5️⃣ 运行时优化(高级)
✔ Web Worker
把计算丢到子线程
const worker = new Worker('worker.js')
✔ 防抖节流
lodash.debounce(fn, 300)
👉 用:
- Lodash
✔ 避免重排重绘
❌ 不要频繁:
div.style.width = '100px'
✔ 批量操作:
requestAnimationFrame(() => {})
三、你这个背景的"进阶优化点"(重点)
你做过性能平台,这些可以拉开差距:
🚀 1. 性能监控体系(核心竞争力)
自己实现一套:
performance.getEntriesByType('navigation')
监控:
-
FCP / LCP
-
接口耗时
-
JS 错误
👉 上报到服务端 → 做可视化(你可以用 ECharts)
🚀 2. 首屏优化(最关键)
-
SSR(Next.js)
-
骨架屏
-
关键 CSS 内联
🚀 3. 大屏/图表优化(你用过 ECharts)
👉 重点:
-
数据分片加载
-
节流 resize
-
关闭动画(大数据量)
四、总结一张图(思维模型)
性能优化 = 加载快 + 渲染快 + 请求少 + 体积小 + 不卡顿
五、给你一个实战建议(非常关键)
你可以在你当前项目里做一个优化方案:
👉 性能优化 checklist:
-
首屏 JS < 200KB
-
LCP < 2.5s
-
接口并发控制
-
表格使用虚拟滚动
-
图片全部 WebP
-
接入性能监控