chrome浏览器性能分析

article/2025/11/10 19:14:33

匿名模式

匿名模式可以保证Chrome在一个相对干净的环境下运行。比如安装了许多chrome插件,这些插件可能会影响我们分析性能表现
使用快捷键ctrl + shift + N 即可代码匿名模式下的chrome新标签页
在这里插入图片描述
如果想分析移动设备 的页面性能,可用CPU控制器来模拟移动端CPU。
1、点击performance
2、点击最右侧设置按钮(⚙),工具栏会展开更多模式,如下图选中CPU 4* slowdown,就能模拟4倍低速CPU
在这里插入图片描述

perfomance record

在这里插入图片描述
第一行:显示了我们截屏的时间0-3200ms,也就是说我们大概录了3秒的时间
第二行:fps的帧率图,我们可以只观的看到帧率的变化
第三行:cpu使用率图,我们也可以只官的看到
第四行:net,这个忽略不说,应该是网络下载的消耗
第五行:这个是重点,frames,我们可以看到每一帧渲染的图片和它渲染的时间,我们可以一帧一帧的选中,然后在下面的summary中查看具体的消耗,其实我们比较关心的是cpu和gpu的消耗,这个都是一眼可以从summary中看到的,但如果要定位到每个函数,还得使用第六行
第六行:我们可以选中一帧的时间,来查看这一帧里函数的使用情况
第七行:raster
第八行:GPU的消耗,注意这里不仅仅指的是GPU渲染的消耗,还包括了CPU和GPU的交互成本,比如给shader变量赋值
第九行:这个其实就是明细,我们在上面八行中,五论选中哪一行的那个时间段,这里都会有具体的消耗明细
关于第九行:再说一下,sumary是以图的方式告诉你你当前的消耗,bottom_up意思是一些重要的函数调用的时间消耗
六大必读知识:如下图
在这里插入图片描述
1:FPS,这里显示的是一个fps绿色柱状张图
2:cpu的时间耗费图,每一帧的cpu的计算时间都会显示出来,如果这里面的黄色部分比较多,就像上面一样,说明每一帧的的计算量挺耗费CPU的
3:net网络图,网络的上传下载耗时
4:Frames,这里放置一张一张的图,如果我们点击某一张,那么下面的6就会解说这一帧干了啥
5:这是一个可以大范围分析的选项,如果选中了这个,就会根据我们在1中选中的帧率范围进行分析,这和4只能分析一帧做了一个拓展
6:对4和5进行分析
可以看到6部分的分析包含以下四个部分
sumary:这个也是一个总结图,可以从总体上去分析,不能定位具体的函数
bottom-Up:代码的执行就是一棵树,从根节点出发,渲染执行整个树,而这个恰恰是从叶子节点开始的,所以这里可以很直观的看到是哪个节点比较耗时,你可以把函数理解为一个一个叶子节点,他们的嵌套就是父节点和子节点的关系,所以一般情况,你想快速知道那个函数比较耗时,就使用这个方式来查看,不需要一层层的往下查找了
call-tree:这个就很常规了,从根节点出发,会把耗时的叶子节点显示出来,我们需要一级一级的拨开,才可以找到耗时的叶子节点
eventLog:时间日志,这里是我比较喜欢用的方式,下面我会对这个进行更细致的解释
事件分析之脚本
在这里插入图片描述
start Time:表示触发这个函数的开始时间,
self Time:表示当前这个函数的实际执行时间,这个相当重要,可以看出来这个函数的是不是真的耗时,结合bottom_up这个排序来看
Total Time:表示当前这个函数的总共执行时间
关于start Time:这个时间就是当前这个函数的执行时间,没什么好说的,注意selfTime+TotalTime 不等于下次的开始时间,我们这里只谈到了脚本的执行时间,浏览器还要重绘和重排还有一些其他的操作呢,而且我们的游戏是基于定时器触发的,不到时间,也不会触发下一帧的渲染,还要包含空闲时间
关于self Time和Total Time都是函数的执行时间,但却有很大不同,函数中存在嵌套,一个函数从第一行执行到最后一行,叫做总共花费时间,但函数中存在着非常多的函数嵌套,这个时间就不能算当前函数的实际执行时间,所以一个函数的实际执行时间,应该排除这个函数里所有嵌套的函数执行的时间,所以一个函数的实际执行时间应该是一个chrome在性能分析的一个最小计算单位,看第一帧,发现selfTime的时间为0,是说这个函数的实际执行时间为0,其实也不完全是,就是说可以忽略不计,
看最上面cpu部分黄色的面积起来了,那CPU一定很辛苦,那接下来就开始查原因吧
第一步
注意看这张图片,最上面我选择了全部的帧进行的判断,中间用的是main,再往下是eventlog,最后我选择了要查看scripting这一下,scripting这个是脚本执行的意思,就是说我们的代码执行耗时,这里包含两部分,一部分是CPU端的游戏逻辑,一部分是在代码中切换GPU状态的耗时,所以这部分内容是我们最直接核心的性能查看点
注意到下面这个椭圆里只有两个部分,他们都是外部触发的,一个是浏览器触发的动画帧(animationFrameFired),一个是js的定时触发的定时器(timer fired),所以可以想到,这游戏逻辑一帧一帧的触发渲染,其实这里就是源头,最上面包含多少帧,那此处下面就会出现多少个这两种触发器的组合,随便选择一个即可
第二步:我们只分析第一帧,一层一层往下拨开,截图如下:
在这里插入图片描述
一个叫timeJiSuan的函数强行入境,它已经不能再继续寻找了,它总的执行时间和实际执行时间都是11.8ms,实锤了,就是它,在吃CPU的计算,点击右侧的链接找到这个函数,截图如下
在这里插入图片描述
你看这个函数的内部写了一个10000000次的循环遍历,这能不卡吗,它这一帧的耗时是11.8ms,我们一帧的时间最多才16.6ms,这个函数有点过了啊,那么问题就找到了!!!!
两个发现
1:注意到截图左侧还有个2126.2ms,这个是这个函数总的耗时,这个和录制的时间有关系,也就说从录制开始到结束这个函数总共执行了这么多时间,这个是一帧一帧加起来的
2:一个js普通for循环执行10000000次大概耗时11.8ms

一般像下面这样使用就可以快速定位到性能消耗大的函数了啊
在这里插入图片描述

Loading事件
Parse HTML 浏览器执行HTML解析
Finish Loading 网络请求完毕事件
Receive Data 请求的响应数据到达事件,如果响应数据很大(拆包),可能会多次触发该事件
Receive Response 响应头报文到达时触发
Send Request 发送网络请求时触发
Scripting事件
Animation Frame Fired 一个定义好的动画帧发生并开始回调处理时触发
Cancel Animation Frame 取消一个动画帧时触发
GC Event 垃圾回收时触发
DOMContentLoaded 当页面中的DOM内容加载并解析完毕时触发
Evaluate Script A script was evaluated.
Event js事件
Function Call 只有当浏览器进入到js引擎中时触发
Install Timer 创建计时器(调用setTimeout()和setInterval())时触发
Request Animation Frame A requestAnimationFrame() call scheduled a new frame
Remove Timer 当清除一个计时器时触发
Time 调用console.time()触发
Time End 调用console.timeEnd()触发
Timer Fired 定时器激活回调后触发
XHR Ready State Change 当一个异步请求为就绪状态后触发
XHR Load 当一个异步请求完成加载后触发
Rendering事件
Invalidate layout 当DOM更改导致页面布局失效时触发
Layout 页面布局计算执行时触发
Recalculate style Chrome重新计算元素样式时触发
Scroll 内嵌的视窗滚动时触发
Painting事件
Composite Layers Chrome的渲染引擎完成图片层合并时触发
Image Decode 一个图片资源完成解码后触发
Image Resize 一个图片被修改尺寸后触发
Paint 合并后的层被绘制到对应显示区域后触发

瀑布流(Waterfall)

在这里插入图片描述
瀑布流中各项指标含义如下:

Queueing

浏览器将资源放入队列时间,比如:遇到更高优先级的请求或请求并发超过 6 了。

Stalled

因放入队列时间而发生的停滞时间。

Proxy negotiation

与代理服务器协商时间。

DNS Lookup

DNS 解析时间,浏览器需要将域名转换成 IP。

Initial Connection

在浏览器发送请求前,需要建立 HTTP 连接的时间。

SSL

如果网站使用了 HTTPS,这个就是浏览器与服务器建立安全性连接的时间。

Request sent

请求发送的时间。

Waiting (TTFB)

等待服务端返回数据的时间,这个时间受制于服务端处理性能。

Content Download

浏览器下载资源的时间,这个时间受制于文件大小和带宽。

可以看出,就是将一次 HTTP 请求所花的时间做了拆解,从而有助于分析和定位问题所在。

那么该如何减少资源耗时或者提高网页打开速度呢?我想有以下几个方向可以考虑:

1:优化资源顺序,减少首屏打开时间。
2:合理收敛和发散网站的域名,域名太多导致更多的 HTTP 连接无法复用,域名太少导致超过浏览器限制并等待。
3:减少 HTTP 请求数,如合理利用客户端缓存,现在前端也有些工具可以合并 JS/CSS 资源等

浏览器之缓存

在这里插入图片描述
浏览器资源缓存分两种,浏览器第一次下载资源以后,会将资源缓存到磁盘上,并且内存中也有一份,当刷新网页时,会从内存中取,当切换网页时,请求的资源会优先从磁盘上找,找不到会从网络上下载
下面以打开百度首页进行举例说明:
第一步打开该网页,其实我这个网页的资源是进行过清理
在这里插入图片描述
第二步硬核清理一下资源并重新打开一下网页:
点击资源,右键,在弹出的小界面确定clear,刷新一次界面,结果如下
在这里插入图片描述
第三步:在第二步的基础上继续刷新界面
from memory cache
time:0ms
在这里插入图片描述
第四步:关闭这个网页,重新打开
from disk cache
time:xxms

在这里插入图片描述

跨域设置

版本号49之前的跨域设置
先介绍一下老方法,参考了一些网上的教程,其实直接在打开命令上加–disable-web-security就可以了。
具体做法为:
1.下载并安装好chorme浏览器后在桌面找到浏览器快捷图标并点击鼠标右键的属性一栏。
2.在属性页面中的目标输入框里加上 --disable-web-security 如下图所示:
3.点击应用和确定后关闭属性页面,并打开chrome浏览器。如果浏览器出现提示“你使用的是不受支持的命令标记 --disable-web-security”,那么说明配置成功
版本号49以后的跨域设置
在C盘下新建一个文件夹MyChromeDevUserData
打开chrome属性,将下面这句话放在目标栏的后面

--disable-web-security --user-data-dir=C:\MyChromeDevUserData

在这里插入图片描述


http://chatgpt.dhexx.cn/article/GaKBQqda.shtml

相关文章

浏览器性能优化(初笔记后续修改补充)

参考:【前端工程师面试宝典】学习说明_互联网校招面试真题面经汇总_牛客网 (nowcoder.com) 性能优化 前端性能优化的手段 方面:加载优化、执行优化、渲染优化、样式优化、脚本优化 加载优化:减少HTTP请求、缓存资源、压缩代码、无阻塞、首屏加载、按需…

深入浏览器内部谈性能优化

1. 浏览器发展历史 a. 1995 年,美国网景公司因“网景浏览器”的发布而快速崛起 b. 同年,微软发布windows95,捆绑IE c. 2002年,微软占据了浏览器市场80%的份额 2. 浏览器三大进化路线(Web应用能做的事以及未来发展趋…

GreenPlum数据库数据脱敏

1、首先备份要操作的数据库表,防止对原表误操作。 2、例子:数据库表名:st_person,要操作的字段为:phone 3、select phone from st_person ; --看看表里该字段是否有数据,大概格式是什么,该表…

数据库防火墙、数据库加密、数据库脱敏真的可用吗?

数据库是所有信息系统的核心,数据库的安全通常是指其中所存数据的安全,是网络安全、信息安全的重要组成部分。目前有很多相关性产品,如数据库加密、数据库防火墙、数据库脱敏、数据库审计等。 一、数据库防火墙 数据库防火墙系统:…

mysql动态脱敏查询_数据库动态脱敏

原标题:数据库动态脱敏 产品简介 中安威士数据动态脱敏系统(简称VS-DM),通过截获并修改数据库通讯内容,对数据库中的敏感数据进行在线的屏蔽、变形、字符替换、随机替换等处理,达到对用户访问敏感数据真实内容的权限控制。对存储于…

MySQL 脱敏函数

项目场景: 示例:项目涉及到敏感数据,例如手机号、姓名等使用mysql存储函数解决。 解决方案: 提示:以下主要使用mysql函数CONCAT、LEFT、RIGHT。 1、CONCAT(str1,str2,…) CONCAT()函数返回结果为连接参数产生的字符串。如有任…

跨数据库跨系统,数据脱敏有新招

作者介绍 贝壳找房DBA团队,负责链家、贝壳找房的数据库服务治理及运维,包括MySQL、Redis、Kafka、RocketMQ、TiDB等产品。为保证线上服务高效、安全、稳定运行,面向研发同学提供一站式的数据库操作平台,建设了满足99.99%标准的高可…

imperva数据库脱敏-server2008

首先安装一个server2008其他的server也行 然后安装java环境 后安装tomcat中间件 一路默认就好 这就是tomcat的控制台 然后安装postgresql数据库 官方的要求是9.1-9.3的版本。 这个数据库也是默认安装就好。里面的密码我设的的Webco123 数据库安装完成 下一步安装发现脱敏的控…

《Sharding-JDBC》——数据库分表+数据库脱敏实现方案

本文从实际情况出发,解决生产中单表数据过大,和数据被拖库导致的问题,并进行的解决方案。本案例使用的框架为轻量型的jfinal,分表数据库脱敏,均采用了Apache的shardingsphere。 首先我们要先明确这样一个业务场景&…

mysql数据脱敏_数据脱敏|静态脱敏|动态脱敏—数据库脱敏_产品

1、敏感数据自动识别 数据脱敏系统可通过预定义敏感数据特征库,在任务执行过程中通过智能匹配识别敏感数据,最大限度的实现脱敏工作自动化,简化以手工方式按字段名定义敏感数据的繁琐工作。 2、丰富的脱敏算法 数据脱敏系统内置同义替换、数据…

使用sql语句对数据库脱敏

最近帮领导整理了一下数据库,给数据库的某些字段进行脱敏,现在整理一下,嘻嘻 1、姓名脱敏 update table set 列 REPLACE(列,SUBSTR(列,2,1),*) 姓名脱敏之后的效果: 2、手机号脱敏 UPDATE table SET 列 ( CASE WHEN 列 IS NO…

数据库脱敏(mybatis 拦截器实现)

1.使用数据库本身自有的函数进行加密 UPDATE tuc_user SET mobileNo HEX(AES_ENCRYPT(mobileNo, ‘xxxxxx’)); 2.注解类 2.1 SensitiveData package com.wisedu.campuses.sensitive;import java.lang.annotation.*;/*** author MR.MEI*/ Inherited Target({ElementType.T…

数据库安全关键技术之数据库脱敏技术详解

数据库脱敏是一种采用专门的脱敏算法对敏感数据进行变形、屏蔽、替换、随机化、加密,并将敏感数据转化为虚构数据的技术。按照作用位置、实现原理不同,数据脱敏可以划分为静态数据脱敏(Static Data Masking, SDM )和动态数据脱敏(…

网页数据库设计

这次是找一个网页,写er图,然后根据er图设计模型,然后生成数据库表 我找的是起点中文网,根据这个网站做了分析,画了e-r图. 模型

Java网页应用之实现对数据库的增、删、改、查。

模拟信息管理系统 通过eclipse实现网页、数据库的连接,实现对数据库的增、删、改、查。 登陆页面: 登陆成功界面: 添加信息界面: 修改信息界面: 删除信息界面: package com.lq.pro_user.dao;import …

(网页设计+数据库增删查改)——课设展示

注:关于网页所有的代码,我已经打包好了,获取方式如下 关注微信公众号大数据智库(直接扫二维码,在我的主页的左下角),回复网页代码即可获取 课设展示 一、网页部分成果展示1、动态显示日期2、动态…

网页实现数据库的增删改查

最近在做项目web后台数据增删查改的时候,看到一篇较为详细的经典文章, 所以转载了下来, 文章出处在:https://blog.csdn.net/qq_32539825/article/details/70657340 如果作者认为侵权的告诉我,我立马删。 首先jsp 和…

通过JSP网页连接Mysql数据库

本文介绍通过JSP网页连接到MySQL,从MySQL数据库中读出一张表,并显示在JSP网页中。 1. 在MySQL数据库中建立数据表 用图形化管理工具Navicat Premium 连接MySQL数据库,在数据库“ming”下建立一张名为“teacher”的数据表。 2. 设置Tomcat 1)将JDBC…

网页连接mysql教程_网页怎么连接到数据库?

网页连接到数据库的方法:首先创建一个网页连接数据库的PHP代码文件;然后解决浏览器编码问题并指定数据库字符集;最后通过“mysql_select_db”函数选择并连接数据库即可。 HTML是无法读取数据库的,HTML是页面前端脚本语言&#xff…

网页JS自动化脚本(八)使用网页专属数据库indexedDB进行数据收集

我们在网页上进行的活动,往往都需要进行收集一些简单的数据,但是因为浏览器的安全原因,浏览器基本上是无法与本地的操作系统直接产生数据交互的,这本来就是一个由于安全问题生产的无解问题,在浏览器里面是内置了几种数据库的,其中一种就是indexedDB,可以用来储存一些非常小的数…