performance api 可原生采集页面性能数据,通过 getentries() 和 performanceobserver 获取加载、渲染等指标,结合结构化处理与图表库实现轻量可视化看板,并支持本地存储趋势分析与阈值告警。

Performance API 是浏览器原生提供的性能监控接口,能精准采集页面加载、渲染、资源请求等关键指标。要实现可视化,核心是采集 + 处理 + 渲染三步闭环,不依赖第三方 SDK 也能快速搭建轻量级性能看板。
用 performance.getEntries() 获取真实用户性能数据
页面加载完成后调用 performance.getEntries() 可获取所有资源(脚本、图片、CSS)的完整生命周期时间戳;搭配 performance.getEntriesByType('navigation') 能拿到导航级指标(如 FP、FCP、LCP、CLS)。注意:部分指标(如 TTFB、DNS 查询耗时)需从 resource 或 navigation 条目中手动计算得出。
- 推荐在
window.addEventListener('load', ...)后执行,确保所有资源已上报 - 对单页应用(SPA),可监听路由变化后重新采集
getEntriesByType('paint')和getEntriesByType('largest-contentful-paint') - 避免高频轮询,按需采集(如首屏加载完成、关键交互后)更合理
用 PerformanceObserver 监听动态性能事件
PerformanceObserver 支持异步监听新生成的性能条目,适合捕获用户交互过程中的长任务、内存波动或布局偏移。例如监听 layout-shift 实时获取 CLS 累计值,或监听 longtask 发现卡顿源头。
- 初始化时需指定类型:
new PerformanceObserver(cb).observe({ entryTypes: ['layout-shift', 'longtask', 'paint'] }) - 每个回调中应做防抖聚合(如每 500ms 合并一次 layout-shift 数据),避免频繁触发渲染
- 注意兼容性:Chrome 69+、Firefox 75+、Safari 15.4+ 支持
longtask;layout-shift在主流现代浏览器均已支持
将原始数据转换为可视化图表
采集到的数据是毫秒级时间戳和数值对象,需结构化处理再喂给图表库。常见做法是提取关键字段(如 startTime、duration、name、value),按维度分组统计(如各资源加载耗时分布、FCP 分桶百分比)。
- 轻量方案可用 Canvas 或 SVG 手绘折线图/柱状图,适合嵌入控制台或调试面板
- 生产环境建议用 Chart.js 或 ApexCharts,传入预处理后的数组(如
[{ time: 123, fcp: 1842 }])即可渲染趋势图 - 移动端需适配视口宽度,优先展示 LCP、CLS、INP 三大核心 Web Vitals 指标
结合本地存储做性能趋势对比
单次采集意义有限,持续追踪才能发现回归问题。可将关键指标(如 LCP 值、JS 执行耗时总和)序列化后存入 localStorage 或 IndexedDB,按天/周聚合生成趋势线。
- 每天首次访问时读取历史数据,与当前值比较后标出上升/下降箭头
- 设置阈值告警:比如 LCP > 2500ms 自动标记为“慢”,并在 UI 角落弹出提示(仅开发环境)
- 注意隐私合规:避免记录用户身份信息,不上传至服务器,纯前端分析
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











