Q1 · 性能指标
你所了解到的前端性能指标都有哪些?
⚡ 速记答案(30 秒)
- 加载类:FP、FCP、LCP、TTFB、DomContentLoaded、onLoad
- 交互类:FID、TBT、TTI、INP(输入响应时间)
- 稳定性类:CLS(布局偏移)、抖动率
- 网络/资源类:DNS、TCP、SSL、首包时间、资源大小和数量
- 体验类:FPS、内存占用、长任务(Long Task)、错误率等
📖 详细讲解
Core Web Vitals
Google 定义的三个核心指标:
| 指标 | 全称 | 含义 | 目标 |
|---|---|---|---|
| LCP | Largest Contentful Paint | 最大内容绘制 | < 2.5s |
| FID | First Input Delay | 首次输入延迟 | < 100ms |
| CLS | Cumulative Layout Shift | 累积布局偏移 | < 0.1 |
指标分类
加载性能
• TTFB:首字节时间(服务端响应速度)
• FCP:首次内容绘制
• LCP:最大内容绘制
交互性能
• FID:首次输入延迟
• TTI:可交互时间
• TBT:总阻塞时间
• INP:新的交互响应性指标(替代 FID)
视觉稳定性
• CLS:累积布局偏移
面试要点
• 能说出 Core Web Vitals 的三个指标及其阈值
• 理解各指标反映的用户体验维度
• 知道如何用代码获取这些指标
💻 代码示例
使用 web-vitals 库获取指标
import { onLCP, onFID, onCLS, onINP, onTTFB } from 'web-vitals';
// 获取 LCP
onLCP((metric) => {
console.log('LCP:', metric.value, 'ms');
// 上报到监控系统
sendToAnalytics({ name: 'LCP', value: metric.value });
});
// 获取 FID
onFID((metric) => {
console.log('FID:', metric.value, 'ms');
});
// 获取 CLS
onCLS((metric) => {
console.log('CLS:', metric.value);
});
// 获取 INP (新指标,替代 FID)
onINP((metric) => {
console.log('INP:', metric.value, 'ms');
});面试技巧:回答性能问题时,先说指标和标准,再讲优化手段,最后结合实际项目经验。