新闻中心

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

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

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

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

什么是 Performance API?

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

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

  • N*igation 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.n*igationStart;
  const domReadyTime = perfData.domContentLoadedEventEnd - perfData.n*igationStart;
<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):首次渲染出文本、图片等内容的时间。
  • 结合 N*igation Timing 数据,可分析白屏时间、资源阻塞等问题。

利用 User Timing API 标记关键逻辑

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

萤火商城 萤火商城

萤火商城V2.0,是2025年全新推出的一款轻量级、高性能、前后端分离的电商系统,支持微信小程序 + H5+ 公众号 + APP,前后端源码完全开源,看见及所得,完美支持二次开发,可学习可商用,让您快速搭建个性化独立商城。萤火商城V2.0开源版 [uni-app端]如何使用uni-app端一、导入uniapp项目 1. 首先下载HBuilderX并安装,地址:https://www.dcloud

萤火商城 0 查看详情 萤火商城
// 标记函数开始
performance.mark('start-he*y-task');
<p>he*yComputation(); // 某个耗时操作</p><p>// 标记函数结束
performance.mark('end-he*y-task');</p><p>// 测量耗时
performance.measure('he*y-task-duration', 'start-he*y-task', 'end-he*y-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) {
    n*igator.sendBeacon('/log-performance', JSON.stringify({
      fcp: fcpEntry.startTime,
      url: window.location.href,
      timestamp: Date.now()
    }));
  }
});

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

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

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

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

以上就是前端性能监控:使用Performance API_js性能优化的详细内容,更多请关注其它相关文章!


# 执行时间  # 燕鑫鑫网站推广怎么样啊  # 融创项目营销推广  # 推广网站建设销售  # 网站推广前需要准备什么  # seo推广计  # 嘉定区seo服务  # 花园营销推广方案策划  # 苏州关键词排名品牌  # 香港网站优化  # 南宫短视频营销推广怎么样  # 如何实现  # 多维  # 开源  # 如何使用  # 弹出  # css  # 自定义  # 加载  # 首次  # 组件渲染  # 性能瓶颈  # dns  # win  # ai  # 后端  # 工具  # 浏览器  # json  # 前端  # js 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 邮政编码查询不到怎么办_邮政编码查询不到的常见原因与对策  快手网页版在线登录 快手网页版官网入口快速访问  win11如何卸载Windows更新补丁 Win11解决更新导致系统不稳定的问题【修复】  J*aScript设计模式实践_j*ascript代码优化  夸克浏览器桌面版同步不了书签怎么处理 夸克浏览器跨设备同步异常解决方案  PDF怎么合并PDF并保持格式_PDF合并文件保持排版教程  4399网页游戏电脑版全新入口 4399电脑端在线玩指南  Win11蓝牙耳机断连怎么解决 Win11蓝牙设置重新配对与驱动更新【技巧】  Win10快速启动功能利弊分析 Win10开启或关闭快速启动教程【技巧】  QQ邮箱网页版邮箱入口 QQ邮箱官方登录平台  Python多版本共存与虚拟环境管理深度指南  漫蛙漫画官方主页入口 漫蛙MANWA网页直达访问链接  Golang如何优化CPU绑定任务分配策略_Golang CPU任务分配优化实践  HTML转PPT成品工具有哪些?HTML网页转PPT成品工具大全  如何在Promise链中有效终止错误处理后的执行  React中useState与局部变量:理解组件状态管理与渲染机制  Mac终端命令大全_Mac常用Terminal指令速查  Excel组合图表怎么做 Excel创建柱状图与折线组合图教程【图表】  机构:以往存储涨价周期小米利润率实际上有所改善 能转嫁给消费者等  Win11怎么关闭快速启动_Win11彻底关机设置教程  CKEditor 5 自定义构建在React应用中渲染失败的调试与解决  漫蛙2在线漫画入口 漫蛙正版漫画网页版直达  微博网页版首页入口 微博电脑端官网登录链接  动漫花园资源网使用步骤_动漫花园资源网下载流程  C++如何打印当前代码行号与文件名_C++预定义宏FILE与LINE的使用  AO3镜像入口大全 AO3网页版内容访问全集  必由学官网首页入口 必由学教师网页版登录指南  UE5.7引擎表现爆炸优化无敌!5090跑4K稳定60FPS  海棠电脑版入口_通过电脑访问海棠官网阅读  Win11怎么隐藏桌面图标 Win11一键隐藏所有桌面元素及恢复显示  QQ邮箱网页版入口页面 QQ邮箱在线登录入口官网  如何仅使用CSS更改登录界面背景图像图标的颜色  学习通网页版快速入口 学习通官网网页版直接打开  C++如何检测键盘输入_C++ _kbhit与_getch函数非阻塞输入  Yandex搜索引擎一键访问入口_俄罗斯Yandex官网免登录  绝地鸭卫平a核爆刀流玩法攻略  如何使用spryker/configurable-bundles-products-resource-relationship模块解决复杂产品捆绑关系难题  Python Socket多播通信中指定源IP地址的实践指南  126邮箱手机版登录官网2026_126手机邮箱免费入口最新  C++如何实现一个装饰器模式_C++设计模式之动态地给对象添加额外职责  Win11如何使用Windows Sandbox Win11沙盒功能开启与使用教程【详解】  如何在Python中使用Optional类型处理可变对象并避免Pylint警告  ACG动漫手机版官网入口 手机ACG动漫APP在线观看正版  蛙漫限时开放最深处链接_蛙漫全站漫画会员同款秒开地址  J*aScript Promise链中如何正确终止后续.then执行并处理错误  MongoDB Aggregation:在嵌套对象数组中精确匹配ObjectId  腾讯QQ邮箱登录入口_QQ邮箱官方网站使用地址  J*aScript DOM操作:高效清空列表元素的策略与实践  qq游戏手机版下载安装_qq游戏移动端入口  Pandas DataFrame 高效批量赋值:告别循环与笛卡尔积误区 

搜索