值得一看
广告
彩虹云商城
广告

热门广告位

前端性能监控:使用Performance API_js性能优化

Performance API是浏览器内置的性能监控工具,通过window.performance提供高精度时间戳和页面加载、资源请求等数据。它包含Navigation Timing、Resource Timing、User Timing和Paint Timing等接口,可测量页面加载耗时、DOM渲染时间、关键渲染指标如FP和FCP,并支持自定义标记监控函数执行时间。结合PerformanceObserver和navigator.sendBeacon,能实现细粒度性能采集与上报,帮助分析白屏时间、资源阻塞等问题,支持多维度性能优化与告警。

前端性能监控:使用performance api_js性能优化

前端性能监控是提升用户体验的关键环节,而浏览器提供的 Performance API 是实现这一目标的核心工具。它能帮助开发者精准测量页面加载、资源请求、脚本执行等关键阶段的耗时,从而定位性能瓶颈并进行针对性优化。

什么是 Performance API?

Performance API 是现代浏览器内置的一套接口,用于获取高精度的时间戳和页面性能相关数据。其核心对象是 window.performance,提供了一系列方法和属性,比如 performance.now() 可以获取毫秒级精确时间,比 Date.now() 更适合做性能测量。

更重要的是,Performance API 提供了多个子接口:

  • Navigation Timing:记录页面导航和加载各阶段的时间,如 DNS 查询、TCP 连接、DOM 解析等。
  • Resource Timing:监控每个资源(JS、CSS、图片等)的请求过程。
  • User Timing:允许开发者自定义标记和测量区间,比如标记某个函数执行开始与结束。
  • Paint Timing:获取首次渲染(FP)和首次内容绘制(FCP)等关键渲染指标。

如何使用 Performance API 监控关键指标

通过以下代码可以快速获取页面加载的核心性能数据:

立即学习“前端免费学习笔记(深入)”;

function getPerformanceMetrics() {
const perfData = performance.timing;
const loadTime = perfData.loadEventEnd - perfData.navigationStart;
const domReadyTime = perfData.domContentLoadedEventEnd - perfData.navigationStart;
<p>console.log(<code>页面完全加载耗时: ${loadTime}ms</code>);
console.log(<code>DOM ready 耗时: ${domReadyTime}ms</code>);</p><p>// 使用 PerformanceObserver 获取更详细的条目
const observer = new PerformanceObserver((list) => {
list.getEntries().forEach((entry) => {
if (entry.entryType === 'paint') {
console.log(<code>${entry.name}: ${entry.startTime}ms</code>);
}
});
});</p><p>observer.observe({ entryTypes: ['paint'] });
}</p><p>getPerformanceMetrics();</p>

这段代码输出的内容包括:

  • FP(First Paint):页面首次像素渲染时间。
  • FCP(First Contentful Paint):首次渲染出文本、图片等内容的时间。
  • 结合 Navigation Timing 数据,可分析白屏时间、资源阻塞等问题。

利用 User Timing API 标记关键逻辑

除了系统自动采集的数据,你还可以手动标记代码中重要操作的执行时间:

超能文献

超能文献

超能文献是一款革命性的AI驱动医学文献搜索引擎。

超能文献
14

查看详情
超能文献

// 标记函数开始
performance.mark('start-heavy-task');
<p>heavyComputation(); // 某个耗时操作</p><p>// 标记函数结束
performance.mark('end-heavy-task');</p><p>// 测量耗时
performance.measure('heavy-task-duration', 'start-heavy-task', 'end-heavy-task');</p><p>// 输出结果
const measures = performance.getEntriesByType('measure');
console.log(measures); // 打印耗时统计</p>

这种方式非常适合监控复杂计算、组件渲染、API 请求处理等业务逻辑的性能表现。

性能数据上报与持续监控

采集到性能数据后,应定期上报到服务器进行聚合分析。例如在页面卸载前发送关键指标:

window.addEventListener('beforeunload', () => {
const fcpEntry = performance.getEntriesByName('first-contentful-paint')[0];
if (fcpEntry) {
navigator.sendBeacon('/log-performance', JSON.stringify({
fcp: fcpEntry.startTime,
url: window.location.href,
timestamp: Date.now()
}));
}
});

navigator.sendBeacon 确保数据在页面关闭时仍能可靠发送,不会被中断。

结合后端系统,你可以实现:

  • 按页面、设备、地区维度分析性能分布。
  • 设置性能阈值告警,及时发现异常。
  • 对比版本迭代前后的性能变化。

基本上就这些。合理使用 Performance API,不仅能掌握页面真实性能状况,还能为后续优化提供数据支撑。不复杂但容易忽略。

相关标签:

css js 前端 json 浏览器 工具 后端 ai win dns 性能瓶颈 组件渲染 css Resource date 接口 JS 对象 dom 性能优化

大家都在看:

掌握React开发:当CSS成为瓶颈时,如何高效突破
解决React开发中的CSS学习瓶颈:Tailwind CSS实践指南
掌握JavaScript动态添加CSS类与样式优先级解析
深入理解JavaScript动态添加CSS类名与样式优先级
使用纯CSS实现固定头部、动态底部与可滚动叠加层
温馨提示: 本文最后更新于2025-11-05 10:40:35,某些文章具有时效性,若有错误或已失效,请在下方留言或联系在线客服
文章版权声明 1 本网站名称: 创客网
2 本站永久网址:https://new.ie310.com
1 本文采用非商业性使用-相同方式共享 4.0 国际许可协议[CC BY-NC-SA]进行授权
2 本站所有内容仅供参考,分享出来是为了可以给大家提供新的思路。
3 互联网转载资源会有一些其他联系方式,请大家不要盲目相信,被骗本站概不负责!
4 本网站只做项目揭秘,无法一对一教学指导,每篇文章内都含项目全套的教程讲解,请仔细阅读。
5 本站分享的所有平台仅供展示,本站不对平台真实性负责,站长建议大家自己根据项目关键词自己选择平台。
6 因为文章发布时间和您阅读文章时间存在时间差,所以有些项目红利期可能已经过了,能不能赚钱需要自己判断。
7 本网站仅做资源分享,不做任何收益保障,创业公司上收费几百上千的项目我免费分享出来的,希望大家可以认真学习。
8 本站所有资料均来自互联网公开分享,并不代表本站立场,如不慎侵犯到您的版权利益,请联系79283999@qq.com删除。

本站资料仅供学习交流使用请勿商业运营,严禁从事违法,侵权等任何非法活动,否则后果自负!
THE END
喜欢就支持一下吧
点赞13赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容