核心指标
LCP < 2.5s INP < 200ms CLS < 0.1
optimize 是识别和修复界面性能问题的技能。它的核心是:让界面加载更快、运行更流畅、体验更顺滑。
作为设计师/开发者,你可能遇到过:
optimize 就是解决这些的。
页面加载时间 vs 跳出率:
- 1 秒:32% 跳出率- 3 秒:53% 跳出率- 5 秒:90% 跳出率
每慢 1 秒,转化率下降 7%用户感知:
快:流畅 → 愉悦 → 信任慢:卡顿 → 烦躁 → 离开
性能 = 用户体验搜索引擎排名因素:
- Core Web Vitals 是排名因素- 移动端速度影响排名- 性能直接影响收录| 指标 | 定义 | 目标 | 影响 |
|---|---|---|---|
| LCP | 最大内容绘制 | < 2.5s | 加载体验 |
| INP | 交互响应 | < 200ms | 交互体验 |
| CLS | 累积布局偏移 | < 0.1 | 视觉稳定性 |
| 指标 | 说明 | 目标 |
|---|---|---|
| FCP | 首次内容绘制 | < 1.8s |
| TTI | 可交互时间 | < 3.8s |
| TTFB | 首字节时间 | < 0.8s |
图片优化:
✅ 正确:- 使用 WebP/AVIF 格式- 响应式图片(srcset)- 懒加载(loading="lazy")- 正确尺寸
❌ 错误:- 使用过大的图片- 使用 PNG/JPG 当图标- 一次性加载所有图片代码优化:
✅ 正确:- Code Splitting- Tree Shaking- 压缩代码- 异步加载非关键代码
❌ 错误:- 全部代码打包到一个文件- 加载不需要的库- 未压缩的代码CDN:
✅ 正确:- 静态资源放 CDN- 就近访问- 缓存优化避免 Layout Thrashing:
❌ 错误(强制同步布局):const width = el.offsetWidth;el.style.width = width + 'px';
✅ 正确(批量读取):const width = el.offsetWidth;// 读取多个属性el.style.width = width + 'px';优化动画:
✅ 正确(GPU 加速):transform: translateX(100px)opacity: 0.5filter: blur(5px)
❌ 错误(触发布局):margin-left: 100pxwidth: 50%padding: 10px减少重绘:
✅ 正确:- 使用 CSS 变量- 使用 transform- 使用 will-change 提示
❌ 错误:- 频繁修改 DOM- 复杂的 CSS 选择器- 未缓存的选择器查询减少请求:
- 合并小文件- 使用 CSS Sprites- 内联关键 CSS- HTTP/2 多路复用缓存策略:
- 静态资源长期缓存- API 响应缓存- Service Worker 离线缓存问题:
优化后:
1. 使用 WebP 格式(减少 30%)2. 响应式图片(只加载需要的尺寸)3. 懒加载(非视口图片不加载)4. 渐进式加载(先模糊后清晰)
结果:- 首屏加载:10MB → 1.5MB- LCP:4s → 1.2s问题:
优化后:
1. Code Splitting(按路由分割)2. 动态 import(异步加载)3. Tree Shaking(移除未使用代码)4. 压缩代码(Terser)
结果:- 首屏包:2MB → 200KB- TTI:5s → 1.5s问题:
优化后:
1. 使用 transform/opacity2. 使用 will-change 提示3. 禁用 hover 效果(移动端)4. 降级复杂动画
结果:- 60fps 稳定- 移动端流畅Lighthouse:- Performance Score- 详细优化建议- 历史对比
Performance:- 帧率分析- 性能瓶颈- 重绘/重排
Network:- 请求分析- 瀑布图- 缓存分析- PageSpeed Insights- WebPageTest- GTmetrix- SpeedCurve核心指标
LCP < 2.5s INP < 200ms CLS < 0.1
图片优化
代码优化
动画优化
transform/opacity 避免 layout
查看源文件: GitHub原始文件