使用浏览器开发工具分析性能

news2025/2/5 0:36:37

使用浏览器开发工具分析性能

  • 一、网络分析
  • 二、性能分析

一、网络分析

1、面板概览:

  1. Controls (控件) : 控制面板的功能
  2. Filters (过滤器) : 控制在请求列表中显示哪些资源
  3. Overview (概览) : 展示检索资源的时间轴,多个垂直堆叠的栏意味着这些资源被同时检索
  4. Requests Table (请求列表) : 展示检索的每个资源,默认情况下,此表按时间顺序排序,右键单击列表的任何标题栏可以以添加或删除信息列。
  5. Summary (概要) : 展示请求的总数、传输的数据量和加载时间
    在这里插入图片描述

2、面板设置

  • 使用大量请求行:资源较少或查看详细情况时打开
  • 概览:显示瀑布信息
  • 屏幕截图:整个网络请求中页面的渲染情况
    在这里插入图片描述

3、网络请求详情

  • DOMContentLoaded:DOM渲染完成时间。即HTML页面由上向下解析HTML结构到末尾封闭标签。
  • Load:当前页面所有资源加载完成时间。DOM树构建完成后,继续加载html/css 中的图片资源等外部资源,加载完成后视为页面加载完毕。
    DOMContentLoaded 会比 Load 时间小,两者时间差大致等于外部资源加载的时间。
  • Finish: 是页面上所有 http 请求发送到响应完成的时间。
    页面发送请求和页面解析文档结构,分属两个不同的线程,所以Finish 时间与DOMContentLoaded 和 Load 并无直接关系。
    在这里插入图片描述
    在这里插入图片描述

4、缓存测试
在这里插入图片描述

5、网络吞吐测试
在这里插入图片描述

6、网络请求阻止
使用命令(英文:block,中文:屏蔽)
临时阻止某个资源的加载,评估对整体页面性能的影响,如果因为这个资源消耗了过多的时间,可以考虑去留。
在这里插入图片描述

7、请求覆盖
使用命令(英文:coverage,中文:覆盖)
可以根据情况合理优化,例如工具代码的拆包、路由懒加载
在这里插入图片描述

二、性能分析

在这里插入图片描述

1、控制按钮

  • record:开始记录分析运行中的性能表现
  • start:刷新页面并性能分析,从加载到最终渲染的性能表现
  • clear:清除数据记录
  • load profile:导入文件加载其他结果
  • save profile:保存分析记录
  • Screenshots:运行过程中每一帧的绘制进行拍照截图,可以看到运行时的渲染情况
  • Memory:查看内存信息
    在这里插入图片描述

下拉切换性能分析报告:
在这里插入图片描述

  • 停用JavaScript示例:默认情况下,录制的Main部分显示录制期间调用的 JavaScript 函数的详细调用堆栈。对移动端进行测试建议停用,这样在移动端运行的时候可以减少系统开销。开启后记录中会忽略所有 JavaScript 的调用栈,记录的 Main 部分会比开启更简短。

  • 启用高级绘制:会详细记录某些渲染细节,比如图层信息、Paint分析等,测试时间会长一些。
    在这里插入图片描述

  • CUP:录制时限制CPU,用于针对各种设备差异进行性能测试。
    例如手机设备比台式机和笔记本的CPU频率小,评估网页需要使用CPU限制来模拟网页在手机设备上的表现。
    在这里插入图片描述

  • 网络:录制时限制网络(Network),用于对网络环境进行性能测试。
    在这里插入图片描述

  • 硬件并发:测试具有不同数量的处理器核心的应用程序性能。

2、Overview

  • FPS:每秒的帧数。出现红色的长条,说明这部分动画性能有卡帧,需要进行优化,而绿色长条,就说明性能还可以,绿色长条越高,说明性能越好。
    FPS 应该维持在 60 前后,即一秒之内进行 60 次重新渲染,每次重新渲染的时间不能超过 16.7ms 左右。
    fps = 60 性能极佳,fps < 24 会让用户感觉到卡顿,(人眼的识别主要是24帧)
    在这里插入图片描述
    在这里插入图片描述

  • CPU:页面加载过程中,各阶段对CPU的占用时间。面积图指示消耗 CPU 资源的事件类型,和底部的summary对应,其中不同的颜色就对应着不同的部分,占用时间越多,表示该部分越需要被优化。
    在这里插入图片描述

  • NET:请求的顺序和花费的时间。每条彩色横杠表示一种资源,横杠越长,检索资源所需的时间越长。 也可以在下面的network查看更具体的顺序和耗时,点击network里面的内容在summary中会显示出具体的内容。
    在这里插入图片描述

3、火焰图:x轴是时间进度,y轴是事件调用关系。第一行表示发生的事件,下面的各行是上面事件的子项。
在这里插入图片描述

超过50ms的任务是一个长任务,占用CPU时间,无法响应用户操作。
在这里插入图片描述

名词全称解释触发时机
DCLdomContentLoadeddom内容解析完成HTML 文档完全加载和解析之后,DOMContentLoaded 事件被触发
Lloaded页面的load事件整个页面及所有依赖资源(如样式表和图片)都已完成加载时触发
FPfirstPaint首次绘制首个像素开始绘制到屏幕上的时机,常说的白屏时间也就是指访问页面到 FP 的这段时间
FCPfirstContentfulPaint首次内容绘制从开始加载到页面内容的任何部分在屏幕上完成渲染的时间,可以是文本、图像(包括背景图像)、svg 元素或非白色的 canvas 元素
LCPlargestContentfulPaint最大内容绘制可视区域内可见的最大图像或文本块完成渲染的相对时间

FCP事件指渲染出第一个内容的事件,而FP指渲染出第一个像素点,渲染出的东西可能是内容,也可能不是。

对应优化:浏览器原理系列:FP,FCP,LCP,DCL,L之分析优化

FP、FCP、LCP是指页面的一个状态,是按顺序触发的。FP之前叫做白屏时间,FP到FCP是dom内容绘制阶段,FCP到LCP是最大的dom元素绘制阶段。

DCL和L,一般来说都是DCL在前,极少部分页面是L在前面。如果页面有许多外部资源需要加载,那么load 事件会后触发,如果页面内容较多,外部资源较少,那么load事件可能先触发。

4、事件统计

查看导致最多工作的根活动时,使用“调用树”选项卡。
查看直接花费最多时间的活动时,使用“自下而上”选项卡。
按照记录过程中发生的顺序查看活动时,使用“事件日志”选项卡。

  • 摘要:CPU占用时间的总结,可以直观地看到各个事件CPU消耗的占比。
    在这里插入图片描述
正在加载:网络通信和HTML解析
Parse HTML浏览器执行 HTML 解析
Finish Loading网络请求完毕事件
Receive Data请求的响应数据到达事件,如果响应数据很大(拆包),可能会多次触发该事件
Send Request发送网络请求时触发
正在执行脚本:JavaScript 执行
Animation Frame Fired一个定义好的动画帧发生并开始回调处理时触发
Cancel Animation Frame取消一个动画帧时触发
GC Event垃圾回收时触发
DOMContentLoaded当页面中的 DOM 内容加载并解析完毕时触发
Evaluate ScriptA script was evaluated.
Eventjs 事件
Function Call只有当浏览器进入到 js 引擎中时触发
Install Timer创建计时器(调用 setTimeout()和 setInterval())时触发
Request Animation FramerequestAnimationFrame()调用预定一个新帧
Remove Timer当清除一个计时器时触发
Time调用 console.time()触发
Time End调用 console.timeEnd()触发
Timer Fired定时器激活回调后触发
XHR Ready State Change当一个异步请求为就绪状态后触发
XHR Load当一个异步请求完成加载后触发
渲染:样式计算和布局
Invalidate layout当 DOM 更改导致页面布局失效时触发
Layout页面布局计算执行时触发
Recalculate styleChrome 重新计算元素样式时触发
Scroll内嵌的视窗滚动时触发
绘制
Composite LayersChrome 的渲染引擎完成图片层合并时触发
Image Decode一个图片资源完成解码后触发
Image Resize一个图片被修改尺寸后触发
Paint合并后的层被绘制到对应显示区域后触发
  • 自下而上:查看哪些活动直接占用了最多的时间,仅显示录制的选定部分期间的活动。
    在这里插入图片描述

    • 自身耗时:指除去子事件这个事件本身消耗的时间,也就是直接花费在该活动中的总时间。
    • 总时间:这个事件从开始到结束消耗的时间(包含子事件)
  • 调用树:主要记录事件调用顺序。
    根活动,是那些导致浏览器做一些工作的活动。例如,当您单击一个页面时,浏览器会触发一个Event活动作为根活动。这Event可能会导致处理程序执行,等等。
    常见的有Event、Paint、Update Layer Tree和Composite Layers等。
    在这里插入图片描述

  • 事件日志:按记录期间发生的顺序(执行顺序)查看活动,仅显示录制的选定部分期间的活动。
    [图片]

最后!!
附上谷歌官方的Demo地址:Demo

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1427091.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024杭州国际安防展览会:引领数字城市安全与智能未来

随着科技的不断进步&#xff0c;数字城市已经成为未来城市发展的重要趋势。作为数字城市建设的重要组成部分&#xff0c;安防技术的创新与应用对于保障城市安全、提高生活品质具有重要意义。为此&#xff0c;2024杭州国际安防展览会将于4月份在杭州国际博览中心隆重召开&#x…

储能新纪元:第十三届中国国际储能大会(CIES2023)深度洞察与未来趋势

随着全球能源结构的持续优化和可再生能源的迅猛发展&#xff0c;储能技术作为支撑能源转型的关键力量&#xff0c;日益受到世界各国的关注。 在这一背景下&#xff0c;2023年第十三届中国国际储能大会&#xff08;CIES2023&#xff09;的召开&#xff0c;无疑为行业内外人士提…

PDF中公式转word

效果&#xff1a;实现pdf中公式免编辑 step1: 截图CtrlAltA&#xff0c;复制 step2: SimpleTex - Snip & Get 网页或客户端均可&#xff0c;无次数限制&#xff0c;效果还不错。还支持手写、文字识别 单张图片&#xff1a;选 手写板 step3: 导出结果选择 注&#xff1a;…

网络协议与攻击模拟_12DNS协议及Windows部署DNS服务器

1、了解域名的结构 2、DNS查询过程 3、Windwos server部署DNS服务器 4、分析流量 实施DNS欺骗 再分析 一、DNS域名系统 1、DNS简介 DNS&#xff08;Domain Name system&#xff09;域名系统&#xff0c;作为将域名的IP地址的相互映射关系存放在一个分布式的数据库&#xff0c…

OBB头篇 | 原创自研 | YOLOv8 更换 SEResNeXtBottleneck 头 | 附详细结构图

左图:ResNet 的一个模块。右图:复杂度大致相同的 ResNeXt 模块,基数(cardinality)为32。图中的一层表示为(输入通道数,滤波器大小,输出通道数)。 1. 思路 ResNeXt是微软研究院在2017年发表的成果。它的设计灵感来自于经典的ResNet模型,但ResNeXt有个特别之处:它采用…

小米服务治理——客户端熔断器(Google SRE客户端熔断器)

目录 前言 一、什么是Google SRE熔断器 二、Google SRE 熔断器的工作流程&#xff1a; 三、客户端熔断器 (google SRE 熔断器) golang GRPC 实现 四、客户端熔断器 (google SRE 熔断器) golang GRPC单元测试 大家可以关注个人博客&#xff1a;xingxing – Web Developer …

【动态规划】【C++算法】1340. 跳跃游戏 V

作者推荐 【动态规划】【字符串】【表达式】2019. 解出数学表达式的学生分数 本文涉及知识点 动态规划汇总 LeetCode1340跳跃游戏 V 给你一个整数数组 arr 和一个整数 d 。每一步你可以从下标 i 跳到&#xff1a; i x &#xff0c;其中 i x < arr.length 且 0 < x…

提及闭包函数,不得不说【python装饰器】

什么是装饰器 1. python装饰器是用于拓展原来函数功能的一种函数&#xff0c;目的是在不改变原函数的情况下&#xff0c;给函数增加功能。 2. 装饰器是通过闭包实现&#xff0c;所以讲装饰器首先得知道什么是闭包。 前言 什么是闭包 一、什么是闭包 1. 一个定义在函数内部的函…

[职场] 个人简历教育背景怎么填 #其他#笔记#媒体

个人简历教育背景怎么填 一个人的受教育程度很大部分决定了此人的专业素质&#xff0c;简历中的教育背景是HR衡量求职者的标准&#xff0c;因此教育背景部分在简历中比较靠前。 怎么写教育背景&#xff1f; 1、时间 首先&#xff0c;最重要的是你要注明好时间&#xff0c;时间都…

idea搭建spring5.3.x源码环境

1.写在前面的话 碰到了不少想阅读或者学习spring源码的同学&#xff0c;但是第一步搭建这个源码阅读环境就能难倒了一大批人。下面我就以spring5.3.x这个源码分支&#xff0c;来具体演示一下搭建过程。 2. 下载源码 下载源码这一步&#xff0c;说实话&#xff0c;由于某些原…

STM32控制DS18B20温度传感器获取温度

时间记录&#xff1a;2024/1/28 一、DS18B20温度传感器介绍 &#xff08;1&#xff09;测温范围-55℃~125℃&#xff0c;在-10℃到85℃范围内误差为0.4 &#xff08;2&#xff09;返回的温度数据为16位二进制数据 &#xff08;3&#xff09;STM32和DS18B20通信使用单总线协议…

算法模板 3.二分查找

二分查找 789. 数的范围 - AcWing题库 check函数&#xff08;lr&#xff08;这里要不要1&#xff09;&#xff09;>> 1 &#xff0c;要根据具体情况&#xff0c;如果是r mid的话lr就不用1&#xff0c;l mid的话就要1 #include <bits/stdc.h> using namespace s…

Android Retrofit添加header参数

前言 有些接口需要单独设置header参数 作为标记 如何灵活 或者统一设置请求header呢 注解Headers 顾名思义 Headers是指多个header 放在对象里 统一管理 //获取xxx Headers({"Content-Type: application/json","User-Agent: test"}) POST("xxxx&q…

小程序:类型三级分类

一、效果图片 二、代码 <template><view class"customPosition"><!-- header --><navBar :border"false" :hasBack"true" :title"titleName"></navBar><!-- 查询 --><view class"search…

JavaWeb之打包失败解决方案

情况描述&#xff1a; ---打包不成功 这时点击Maven中的蓝色小闪电&#xff1a; 小闪电的意思&#xff1a;是否跳过测试。点击选中就可以跳过&#xff0c;打包的时候就可以跳过测试代码。 再次打包后即可成功&#xff1a; 查看具体打包后的jar包&#xff1a; 打包后&#x…

openGaussdb5.0单点企业版部署_Centos7_x86

本文档环境&#xff1a;CentOS7.9 x86_64 4G1C40G python2.7.5 交互式初始化环境方式 介绍 openGauss是一款开源关系型数据库管理系统&#xff0c;采用木兰宽松许可证v2发行。openGauss内核深度融合华为在数据库领域多年的经验&#xff0c;结合企业级场景需求&#xff0c;持续…

Ubuntu远程连接登录信息解读(ubuntu登录信息、远程登录信息)

文章目录 1. Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 5.4.0-100-generic aarch64)2. 三个链接是官方提供的文档、管理工具和技术支持3. System information as of Thu 01 Feb 2024 03:30:45 PM HKT4. System load: 1.16&#xff1a;系统负载指数5. Processes: 1096系统正在运…

虹科技术|一文详解IO-Link Wireless技术如何影响工业无线自动化

导读&#xff1a;在工业无线自动化的飞速发展进程中&#xff0c;IO-Link Wireless技术成为了一项具有颠覆性的创新。它将IO-Link协议与无线连接完美结合&#xff0c;解决了传统通信技术在工业应用中的痛点。本文将深入解析IO-Link Wireless技术的原理、应用领域、优势以及实际案…

vue3集成video.js

就长这个样子&#xff0c;该有的功能都有了 首先安装 npm install video.js 然后创建一个vue文件 <template><div class"full" style"padding: 10px;overflow: auto;"><video :id"videoId" class"video-js"><…

LeetCode.1686. 石子游戏 VI

题目 题目链接 分析 本题采取贪心的策略 我们先假设只有两个石头a,b&#xff0c; 对于 Alice 价值分别为 a1,a2&#xff0c; 对于 Bob 价值而言价值分别是 b1,b2 第一种方案是 Alice取第一个&#xff0c;Bob 取第二个&#xff0c;Alice与Bob的价值差是 c1 a1 - b1&#xf…