JavaScript如何进行性能监控_JavaScript中性能API有哪些用途
发布时间 - 2026-01-01 00:00:00 点击率:次JavaScript性能监控主要依靠Performance API,通过performance.getEntriesByType('navigation')、PerformanceObserver监听paint/longtask/layout-shift等事件、performance.mark()/measure()打点测速、performance.memory评估内存(Chrome专属)及主动上报数据实现全面监控。
JavaScript性能监控主要依靠浏览器提供的Performance API,它能精确测量页面加载、脚本执行、渲染、资源加载等各阶段耗时,帮助定位性能瓶颈。
利用performance.timing分析页面加载关键节点
该属性提供导航和资源加载的详细时间戳(如navigationStart、domContentLoadedEventEnd、loadEventEnd),可用于计算白屏时间、首屏时间、DOM就绪时间等核心指标。注意:在现代页面中,performance.timing已被performance.navigation和performance.getEntries()逐步替代,但仍兼容大多数场景。
- 推荐用
performance.getEntriesByType('navigation')[0]替代performance.timing获取更准确的导航数据 - 计算首屏时间建议结合
PerformanceObserver监听paint类型事件,捕获first-contentful-paint
使用performance.mark()和performance.measure()打点测速
可在代码关键路径插入自定义标记(mark),再通过measure计算两点间耗时,适合监控函数执行、模块加载、接口响应等业务逻辑性能。
-
performance.mark('api-start')→ 发起请求前打点 -
performance.mark('api-end')→ 接口返回后打点 -
performance.measure('api-duration', 'api-start', 'api-end')→ 生成可统计的测量记录 - 配合
performance.getEntriesByName('api-duration')提取结果,便于上报或调试
监听PerformanceObserver捕获实时性能事件
这是现代性能监控的核心方式,支持监听paint、largest-contentful-paint、layout-shift、longtask等关键指标,尤其适合监控用户体验相关数据(如CLS、LCP、INP)。
- 监听FCP:
new PerformanceObserver(cb).observe({entryTypes: ['paint']}),过滤name === 'first-contentful-paint' - 捕获长任务(>50ms)影响主线程:
entryTypes: ['longtask'],识别JS阻塞问题 - 监控布局偏移:
entryTypes: ['layout-shift'],辅助优化CLS
借助performance.memory(仅Chrome)评估内存压力
该属性提供JavaScript堆内存使用情况(usedJSHeapSize、totalJSHeapSize),有助于发现内存泄漏或过度对象创建问题。注意:非标准API,仅部分浏览器支持,生产环境需做兼容判断。
- 定期采样
performance.memory?.usedJSHeapSize,对比历史趋势 - 结合
performance.getEntriesByType('resource')分析大体积JS/CSS是否未及时释放 - 避免在循环中持续创建闭包或未清理的事件监听器
不复杂但容易忽略:所有Performance API采集的数据都需主动上报(如通过sendBeacon)才能用于后续分析,且应控制采样率避免影响用户体验。
# css
# javascript
# java
# js
# 浏览器
# ai
# 性能瓶颈
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】
如何在云虚拟主机上快速搭建个人网站?
PythonWeb开发入门教程_Flask快速构建Web应用
Laravel怎么实现模型属性的自动加密
Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】
青岛网站建设如何选择本地服务器?
JavaScript如何实现错误处理_try...catch如何捕获异常?
Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程
手机软键盘弹出时影响布局的解决方法
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤
Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】
香港服务器建站指南:免备案优势与SEO优化技巧全解析
Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】
JS经典正则表达式笔试题汇总
如何在建站主机中优化服务器配置?
简历在线制作网站免费版,如何创建个人简历?
Laravel如何处理异常和错误?(Handler示例)
如何破解联通资金短缺导致的基站建设难题?
详解阿里云nginx服务器多站点的配置
Laravel如何使用模型观察者?(Observer代码示例)
js代码实现下拉菜单【推荐】
音乐网站服务器如何优化API响应速度?
Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程
html如何与html链接_实现多个HTML页面互相链接【互相】
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
怎样使用JSON进行数据交换_它有什么限制
Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧
如何用AI帮你把自己的生活经历写成一个有趣的故事?
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册
Laravel如何为API生成Swagger或OpenAPI文档
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
如何在万网自助建站平台快速创建网站?
Laravel如何构建RESTful API_Laravel标准化API接口开发指南
教学论文网站制作软件有哪些,写论文用什么软件
?
Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
智能起名网站制作软件有哪些,制作logo的软件?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
教你用AI将一段旋律扩展成一首完整的曲子
Laravel如何生成API文档?(Swagger/OpenAPI教程)
教你用AI润色文章,让你的文字表达更专业
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
WEB开发之注册页面验证码倒计时代码的实现
JS去除重复并统计数量的实现方法
什么是JavaScript解构赋值_解构赋值有哪些实用技巧
Win11关机界面怎么改_Win11自定义关机画面设置【工具】


性能监控主要依靠Performance API,通过performance.getEntriesByType('navigation')、PerformanceObserver监听paint/longtask/layout-shift等事件、performance.mark()/measure()打点测速、performance.memory评估内存(Chrome专属)及主动上报数据实现全面监控。