主题
React 性能优化
React 应用如何建立 Web Vitals 和 RUM 性能体系?
性能治理要把用户感知指标、React 运行时、网络资源和业务结果关联起来,而不是只追 Lighthouse 分数。
面试官想考什么
- LCP、INP、CLS 分别反映什么? 考察指标基础。
- 实验室和 RUM 为什么会不一致? 考察真实环境意识。
- 如何按版本和设备定位回归? 考察数据分析。
- 性能指标如何关联业务? 考察治理闭环。
一句话回答
text
用 LCP、INP、CLS 等指标描述用户体验,用 RUM 按路由、版本、设备和网络分组,再结合 React Profiler、资源和业务指标形成性能回归闭环。面试回答详解
1. 核心指标
- LCP:主内容出现的速度,常受 TTFB、关键数据和主图影响。
- INP:用户交互到下一次绘制的响应,常受事件、React 更新、长任务和布局影响。
- CLS:页面视觉稳定性,常受图片尺寸、字体、广告和异步内容影响。
2. RUM 数据模型
text
metric + route + release + device + network + region + user state只记录必要上下文,脱敏用户标识,使用分位数而不是只看平均值。实验室数据用于稳定复现,RUM 用于验证真实设备和网络。
3. 性能预算
为关键路由设置 JS 体积、LCP、INP、CLS、长任务和错误率预算,CI 和发布平台分别负责实验室门禁与线上告警。
4. 工程取舍
不能为了指标牺牲可访问性、内容完整性或业务转化。性能数据采集也有网络和隐私成本,应采样和批量上报。
可直接背诵的 30 秒回答
text
我会用 LCP、INP、CLS 描述用户感知,再补充 TTFB、长任务、JS 体积、React commit 和业务成功率。实验室工具用于复现,RUM 按路由、release、设备、网络和登录态分组,观察 P75/P95 和回归趋势。最终把性能预算、CI 检查、线上告警和回滚动作接入发布流程。扩展知识
性能闭环
text
采集 -> 分组 -> 基线 -> 定位 -> 优化 -> 灰度 -> 回归面试官追问链
追问一:Lighthouse 很高但 INP 很差,可能为什么?
- 考察点:是否理解首屏和交互的差异。
- 回答方向:检查事件处理、React render/commit、长任务、第三方脚本和低端设备,不要只看首屏指标。
追问二:为什么用 P75/P95?
- 考察点:是否理解分布。
- 回答方向:平均值会掩盖慢用户;分位数能反映大多数或尾部用户的真实体验。
追问三:RUM 如何避免影响性能?
- 考察点:观测成本意识。
- 回答方向:延迟加载、采样、批量上报、字段裁剪、
sendBeacon和失败静默。