首页 > 其他分享 >使用 Performance API 实现前端资源监控

使用 Performance API 实现前端资源监控

时间:2024-09-13 08:55:20浏览次数:10  
标签:前端 API performance Performance 加载 性能 页面

1. Performance API 的用处

Performance API 是浏览器中内置的一组工具,用于测量和记录页面加载和执行过程中的各类性能指标。它的主要用处包括:

  • 监控页面资源加载:跟踪页面中的资源(如 CSS、JavaScript、图片)的加载时间。
  • 分析页面加载时间:从导航到页面完全渲染的所有时间点。
  • 衡量用户交互性能:测量用户点击、输入等操作的响应时间。
  • 优化性能瓶颈:通过标记特定的代码片段和事件,精准定位性能瓶颈。

这些数据帮助开发者更好地理解页面表现,进而对性能进行优化和改进。

2. Performance API 常用的 API

在使用 Performance API 时,以下几个 API 是开发者最常用的工具:getEntries()mark()、以及 PerformanceObserver。这些 API 提供了从获取性能数据到观察性能事件的全面能力。

2.1 performance.getEntries()

performance.getEntries() 是 Performance API 提供的一个方法,它返回所有的性能条目(entries)。这些条目记录了从页面加载到当前时刻,各类资源的加载和交互的性能数据。性能条目包括页面加载资源(如 CSS、JS、图片等)以及自定义的事件标记。

// 获取页面中所有资源的性能条目
const entries = performance.getEntries();
console.log(entries);

通过 getEntries(),你可以获取资源加载时间、开始时间、结束时间等详细信息。这对于了解页面中每个资源的加载耗时十分有帮助。

2.2 entries 的类型

getEntries() 返回的每个性能条目对象都属于以下几种类型,开发者可以根据需要筛选和分析不同类型的数据:

  • navigation:与页面导航相关的条目,通常用于分析页面加载的时间点。
  • resource:所有通过网络请求加载的资源条目,包括 JS、CSS、图片等。
  • mark:开发者自定义的标记,用于记录特定事件的开始或结束。
  • measure:通过 performance.measure() 生成的条目,用于测量两个标记之间的时间间隔。

例如,使用 performance.getEntriesByType('resource') 可以只获取资源加载的性能数据:

// 获取所有资源加载的性能条目
const resourceEntries = performance.getEntriesByType('resource');
console.log(resourceEntries);

通过这种方式,开发者可以轻松获取页面资源的加载时间及其详情。

2.3 performance.mark()

performance.mark() 是 Performance API 提供的一个方法,允许开发者在代码中手动创建标记。这些标记可以用于记录特定事件的发生时间,从而在分析性能时,更加精确地掌握代码中某个关键操作的时机。

// 创建自定义标记
performance.mark('start-task');

// 执行某个任务
doSomething();

// 创建结束标记
performance.mark('end-task');

// 测量开始和结束之间的时间
performance.measure('Task Duration', 'start-task', 'end-task');

mark() 非常适合用于衡量应用程序中某段代码的执行时间,与 measure() 一起使用可以提供更加详细的性能分析。

2.4 PerformanceObserver

PerformanceObserver 是 Performance API 的一个高级特性,它可以监听性能事件的发生,并在事件触发时执行回调。这种观察模式可以帮助开发者实时监控页面中的资源加载、导航和其他性能相关的事件。

// 创建 PerformanceObserver 实例,监听资源加载的事件
const observer = new PerformanceObserver((list) => {
  const entries = list.getEntries();
  entries.forEach(entry => {
    console.log(`${entry.name}: ${entry.duration}ms`);
  });
});

// 监听资源类型的性能条目
observer.observe({ entryTypes: ['resource'] });

通过 PerformanceObserver,你可以监听特定类型的性能条目,如 resourcemark,并实时分析其数据。对于监控资源加载、关键操作或用户交互时的性能表现非常有用。

总结

Performance API 是前端开发者进行性能监控的强大工具,它提供了对页面加载、资源加载以及用户交互的详细分析能力。常用的 API,如 getEntries()mark()、以及 PerformanceObserver,可以帮助开发者实时获取和分析性能数据。

通过合理地使用 Performance API,你可以更好地了解页面中各类操作的性能表现,从而有效地优化 Web 应用的加载速度和用户体验。

标签:前端,API,performance,Performance,加载,性能,页面
From: https://www.cnblogs.com/chenyishi/p/18411037

相关文章

  • 零基础5分钟上手亚马逊云科技-利用API网关管理API
    简介欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列,适用于任何无云计算或者亚马逊云科技技术背景的开发者,通过这篇文章大家零基础5分钟就能完全学会亚马逊云科技一个经典的服务开发架构方案。我会每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿云开发/架构技术......
  • 登录页面 —— 前端代码解析与分享
    一、页面效果展示这个登录页面以简洁大气的风格呈现,背景采用了线性渐变,从深灰色过渡到浅紫色,营造出一种科技感十足的氛围。页面中央是一个白色的登录框,包含了用户名、密码输入框,以及一个带有动态验证码的输入框和刷新验证码的图片。登录按钮采用了鲜艳的蓝色,当鼠标悬停时,颜色......
  • [前端][JS]html中js不同位置的区别
    里面,写到下面,这三种有什么区别?javascript代码写在<head>里面:由于这时候网页主体(body)还未加载,所以这里适合放一些不是立即执行的自定义函数,立即执行的语句则很可能会出错(视浏览器而定)javascript代码写在<body>里面:这里可以放函数也可以放立即执行的语句,但是如果需要和网页......
  • Qml 实现仿前端的 Notification (悬浮出现页面上的通知消息)
    【写在前面】经常接触前端的朋友应该经常见到下面的控件:在前端中一般称它为Notification或 Message,但本质是一种东西,即:悬浮弹出式的消息提醒框。这种组件一般具有以下特点:1、全局/局部显示:它不依赖于具体的页面元素,可以在整个页面的任意位置显示。2、自动消失:默认情况下,......
  • 前端实现字符串插入千位分割符
     前端开发时经常会遇到需要把一个很大的金额或是银行卡号进行千位分割展示,这里分享两个常用的方法:循环遍历字符长度添加和正则替换(此方法仅适用于正整数)letnum=123456789000;functionthousandSplit(number){letstr=String(number)//数字转换为字符串letre......
  • Qml 实现仿前端的 Notification (悬浮出现页面上的通知消息)
    【写在前面】经常接触前端的朋友应该经常见到下面的控件:在前端中一般称它为Notification或 Message,但本质是一种东西,即:悬浮弹出式的消息提醒框。这种组件一般具有以下特点:1、全局/局部显示:它不依赖于具体的页面元素,可以在整个页面的任意位置显示。2、自动消失:默认情况下......
  • AES加密解密全流程演示__api基础使用
    publicstaticvoidmain(String[]args)throwsException{//共同约定秘钥和加密算法Stringcontent="你好,世界";//AES密钥长度通常为128、192或256位Stringkey="1234567812345678";//16字节*8Stringalgorithm="AE......
  • Vue 3 Composition API进阶指南
    在上一篇文章中,我们介绍了Vue3的CompositionAPI基础,包括如何使用setup函数、ref和reactive来创建响应式数据,以及使用watchEffect来监控数据变化。本文将继续深入探讨CompositionAPI的高级用法,帮助你更好地理解和利用Vue3的新特性。组合多个Hooks在实际开发中,我们经常需要......
  • 面试-JS Web API-JSONP和cors
    JSONP(JSONwithPadding)JSONP是通过<script>标签来实现跨域数据传输的技术。它是为了绕过浏览器的同源策略限制而诞生的。访问一个网址,服务端一定返回一个html文件吗?---不是的服务器可以任意动态拼接数据返回的,只要符合html格式的要求就可以。JSONP的工作原理:客......
  • 微服务引擎 MSE 及云原生 API 网关 2024 年 8 月产品动态
    ......