浏览器 DevTools 你真的会用吗?

2023-10-29 16:41

本文主要是介绍浏览器 DevTools 你真的会用吗?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Start

本文将会介绍浏览器devtool的一些常用工具方法,这些工具能够能够以可视化的方式展现当前网页情况,我们也能快速定位代码问题,如果我们能很好的利用起来,那就能写出高质量代码。

Performance(重点)

强大的性能监控工具

工具栏
cbe1cbe8a037e9ec136b8dabde835a8c.jpeg
image.png

从左到右依次为:

  • Record(Ctrl+E) 记录运行时性能

  • Start profiling and reload page(Ctrl+Shift+E) 记录负载性能,会重新加载页面

  • clear 清空面板

  • Load profile... 上传

  • Save profile... 下载,会生成个json文件,需要做比对可以再上传

  • recordings 生成过的profile列表记录,注意:点clear就全没有了

  • Screenshots 屏幕截图,启用会在录制时捕获每一帧的屏幕截图

  • Memory 内存 下面也会有重点介绍

  • Web Vitals 核心功能,会显示LCP,FCP,LongTasks

  • Collect garbage 录制时强制垃圾收集

概览

690daebf4e72b1ce1b4f6516342e97e5.jpeg在概览上可以拖动鼠标进行缩放,可以点击定位,可以鼠标滚轮放大缩小。

CPU颜色划分: Loading\color{blue}{Loading}Loading

颜色执行内容
蓝色 ( Loading\color{blue}{Loading}Loading )网络通信和HTML解析
黄色 ( Scripting\color{yellow}{Scripting}Scripting )JavaScript执行
紫色( Rendering\color{purple}{Rendering}Rendering )样式计算和布局(重排)
绿色 ( Painting\color{green}{Painting}Painting )样式更改(重绘)
灰色 ( Other\color{gray}{Other}Other )其他事件
白色 ( Idle\color{white}{Idle}Idle )空闲时间
红色 ( LongTasks\color{red}{Long Tasks}LongTasks )长任务出现
火焰图

点击火焰图任何区域,可以使用键盘的WASD进行缩放和左右位移

Frames-帧
24afa13fea5deb8818fa7f0211089703.jpeg
image.png
  • 白色:没有变化

  • 绿色:按预期及时渲染

  • 黄色:浏览器尽最大努力及时呈现至少一些视觉更新,比如滚动了但主线程没空

  • 红色:掉帧,无法在合理的时间内渲染帧,比如:scrollresize事件触发过于频繁,浏览器来不及处理导致在下一个事件被触发之前无法完成

Main-主线程
74fabb422ec77840e78ffb2e133e66c9.jpeg
image.png

Ctrl + F可以搜索Task名字,定位到具体的位置会标红

右上角有红色三角形表示该Task是一个长任务(执行超过50ms),左边灰色区域执行时间50ms,右边红色区域执行时间就是39.83ms。长任务过多会导致页面出现卡顿,那我下篇性能优化文章会讲解如何去优化长任务。
从上倒下依次是调用堆栈,上面的事件导致下面的事件。

Task 颜色划分
DevTools 为脚本分配随机颜色,来自一个脚本的函数调用是浅绿色的,来自另一个脚本的调用可能是米色的。较深的黄色代表脚本活动,紫色代表渲染活动。

我们可以点击任意脚本活动查看724bda8e4a19e9eb00105dbad7fcb24c.jpeg

(anonymous)代表的是匿名函数的意思,点击旁边文件导航跳转过去,光标定位的地方就是函数调用的位置。

98a798ae4da1fc99cf1a460ffdf2864c.jpeg
image.png
Call Tree 调用树
61db6d1bfbf6f30911d0d70adf26cbea.jpeg
image.png

调用树的顺序是从上到下,和Buttom-Up顺序相反,这里介绍一个就可以了
SelfTime指的当前函数执行时间,不包括子函数执行时间,百分比是当前时间除以所有SelfTime时间之和。
TotalTime指的SelfTime和子函数的TotalTime之和,百分比是当前时间除以首个函数的TotalTime
Activity列中的顶级项目,例如EventPaintComposite Layers是根活动,嵌套表示调用堆栈。可以看到,实际计算出来的值还是会有一点误差。

Event Log 事件日志
2d6c76b1dc0e5a097e9e6797f6561971.jpeg
image.png

按记录期间发生的顺序查看活动,包括加载、脚本、渲染、绘制等,也提供了事件名和耗时时长搜索过滤。
Start Time表示该活动开始的时间点,相对于记录的开始时间。比如103.6ms,表示活动在录制开始后103.6毫秒开始。


JS分析器

打开开发者工具按ctrl+shift+p搜索Show Javascript Profiler选中然后回车

cc6aaf43fbc7b1eb546443969f5408a6.jpeg
image.png

可以看到当前js代码执行时间,也可以通过左上角录制,测试当前按钮执行的函数是否有性能问题。

26a002f64872b63316cd5174f1a48d70.jpeg然后我们点击右侧的html

aac6bed51fe0b167199b4ffb348e84d1.jpeg
image.png

点击事件执行时间和函数每一行执行的时间都给你展示出来,是不是very nice?


Rendering

搜索Rendering

81650de2bebcd130facbf4d3c2f18668.jpeg
image.png
1. Paint Flashing(绘画闪烁)
页面中需要重绘的区域会突显成绿色
复制代码
2. Layer Shif Regions(层移位区域)
页面中需要重排的区域会突显成蓝色
复制代码
3. Scrolling Performance Issues(滚动性能问题)
页面中减慢滚动速度的元素会突显成蓝绿色,包括触摸滚轮事件处理程序和其他主线程滚动情况
复制代码
e42a28b0b5e1c4c429eb80b2df08f201.jpeg
image.png
4. Core Web Vitals(核心网络生命力)
c3f8dddb72a3027e04db5f0e0e56fb16.jpeg
image.png

右上角面板中我们能够看到当前网站的三大核心指标所消耗的时间,这里做个简单的介绍:

  • LCP\color{green}{LCP}LCP (Largest Contentful Paint) 显示最大内容元素所需的时间,衡量网站的载入效率

  • FID\color{green}{FID}FID (First Input Delay) 首次输入延迟时间,衡量网站互动性

  • CLS\color{green}{CLS}CLS (Cumulative Layout Shift) 累计版面配置转移,衡量网页稳定性

那我们拿到这些指标,再结合浏览器相关标准就能有目的性的做性能优化,那性能优化相关我打算后期再出一篇文章,这里不做过多讨论。

图层面板

搜索Show Layers

869bf0a3815695a1988d02431d752100.jpeg
image.png

Slow scroll rects翻译的意思是慢速移动矩形,其实就是对应上面Rendering中的第3点,影响页面滚动的元素。有时候在写页面的时候,页面出现横向滚动条又无法定位到哪个子集元素宽度超出了,这时候就可以打开Layers面板查看了,能快速定位我们的css问题。


Css概览

搜索Show CSS Overview

27880ef3834df1b9c9ae18c400b34c28.jpeg颜色和字体颜色可以给ui检查检查,未使用的声明中点击数值可以看到具体的元素,鼠标放上去能定位到DOM位置。


Memory

查看内存使用情况,是否有内存泄露

1.测试当前内存

6eec42617bd10b0ef3e160a0c82b1ca6.jpeg点击Heap snapshot,再点击左上角圆圈,获取当前快照 ec5fc5a63f202d420d0960c69c98b8f2.jpeg可以看到当前内存占用情况

2.测试内存泄漏

点击Allocation instrumentation on timeline,再点击左上角圆圈,开始记录内存情况

8f1626c4600a66b56d9e8757a5dde027.jpeg可以看到内存泄露了,点击(array)进去能看到具体哪个变量造成的内存泄露。

3.performance查看内存泄露

切到performance也能测内存泄露,我们需要在下方勾选Menory,再去录制即可。b73daf2196cf0d80c8f2dbf2a2836caa.jpeg可以看到内存一直在增加,没有平稳成一条直线就说明有泄露了。


覆盖范围

搜索Coverage

2fe78c0467b4807bc1e57e5cc4a9c921.jpeg
image.png

11bba52a7ff90e78aec608018edbeee6.jpeg可以看到,右边百分比就是当前代码未使用到的,单位是字节,所以我们可以对此优化。


性能监视器

搜索Show Performance Monitor

4711f2ede3222314d12a53a128654997.jpeg可以看到:CPU使用情况、JS内存大小、DOM节点数等都可以实时监控。

监控内存泄漏到平稳图:c2513b718519ef2f21afd887e4214280.jpeg


FPS

简介:FPS(Frames Per Second),表示每秒传输帧数,是速度单位,是用来分析动画的一个主要性能指标。一般在50-60FPS的动画会相当流程,30FPS就会感觉卡顿了。

0da65eba2d4062e7a8b999809b8761a2.jpeg当然,performance也能查看FPS,红色表示长时间帧,可能出现卡顿掉帧。

End

好了,先分享这么多,如果喜欢,可以点个赞,你的点赞将是我最大的动力,谢谢!

关于本文

作者:戴欧巴

https://juejin.cn/post/7126188054821208100

这篇关于浏览器 DevTools 你真的会用吗?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/301944

相关文章

zeroclipboard 粘贴板的应用示例, 兼容 Chrome、IE等多浏览器

zeroclipboard单个复制按钮和多个复制按钮的实现方法 最近网站改版想让复制代码功能在多个浏览器上都可以实现,最近看网上不少说我们的代码复制功能不好用的,我们最近将会增加代码高亮等功能,希望大家多多支持我们 zeroclipboard是一个跨浏览器的库类 它利用 Flash 进行复制,所以只要浏览器装有 Flash 就可以运行,而且比 IE 的

为什么现在很多人愿意选择做债务重组?债重组真的就这么好吗?

债务重组,起初作为面向优质企业客户的定制化大额融资策略,以其高效周期著称,一个月便显成效。然而,随着时代的车轮滚滚向前,它已悄然转变为负债累累、深陷网贷泥潭者的救赎之道。在此路径下,个人可先借助专业机构暂代月供,经一段时间养护征信之后,转向银行获取低成本贷款,用以替换高昂网贷,实现利息减负与成本优化的双重目标。 尽管债务重组的代价不菲,远超传统贷款成本,但其吸引力依旧强劲,背后逻辑深刻。其一

微软正式推出 Spartan 斯巴达浏览器

作为用于替代 IE 浏览器的下一代继任者,微软的 Project Spartan 斯巴达浏览器可算是吊足了玩家们的胃口!如今,在最新的 Windows 10 Build 10049 版本起,它终于正式登场了。 斯巴达浏览器搭载了全新的渲染引擎、新的用户界面并集成了 Cortana 语音助手。功能上新增了稍后阅读列表、阅读视图、F12开发者工具、支持网页注释 (手写涂鸦),可以保存到 O

PC与android平板通过浏览器监控Verybot的视频

下面这个视频是PC与android平板通过浏览器监控Verybot的视频:           http://v.youku.com/v_show/id_XNjYzNzYyMTIw.html

搜狗浏览器打开CSDN博客排版错乱问题解决

之前发生过几次,不知道什么原因。 今天一直用着好好的,打开一个csdn连接,显示404,博文被删除了,于是就用百度快照打开试试,百度快照打开显示的排版很乱也没找到有用信息。 后面再浏览CSDN博客就排版错乱,显示一个大大二维码图片。 尝试删除IE缓存无效,使用谷歌浏览是好的。 基本锁定就是搜狗缓存导致的,于是找如何删除搜狗缓存   清除后恢复正常

Spring Boot之DevTools介绍

Spring Boot DevTools 是 Spring Boot 提供的一组易于使用的工具,旨在加速开发和测试过程。它通过提供一系列实用的功能,如自动重启、实时属性更新、依赖项的热替换等,极大地提高了开发者的开发效率。本文将详细介绍 Spring Boot DevTools 的主要特性、工作原理,并提供一个完整的代码示例。 目录 一、Spring Boot DevTools 主要特性 1

240907-Gradio插入Mermaid流程图并自适应浏览器高度

A. 最终效果 B. 示例代码 import gradio as grmermaid_code = """<iframe srcdoc='<!DOCTYPE html><html><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width" /><title>My static Spa

Jasperreports+jaspersoft studio 实现单个或多个jrxml(jasper)文件生成一个pdf文件,并利用Servlet发送该pdf文件到浏览器中展示

Jasperreports+jaspersoft studio 实现单个或多个jrxml(jasper)文件生成一个pdf文件,并利用Servlet发送该pdf文件到浏览器中展示; 代码如下: Demo07.jrxml <?xml version="1.0" encoding="UTF-8"?><!-- Created with Jaspersoft Studio version 6.6.

vite是如何实现依赖预构建的,浏览器为什么没有实现从node_modules查找依赖,vite开发环境解决了什么问题

浏览器的esmodule 为什么没有做从node_modules查找依赖项 浏览器是基于http请求的,node_modules中依赖项不可控,可能又会依赖很多的包,整个依赖图都需要加载的话很耗性能。 commonjs是运行在服务端的,以file形式读取文件,内部有规避机制。 依赖预构建 首先vite会找到对应的依赖,然后调用esbuild(对js语法进行处理的一个库),将其他规范的代码转换

浏览器工作原理(3)-TCP协议文件如何从服务器到浏览器

浏览器工作原理-TCP协议,文件如何从服务器到浏览器 本周继续学习浏览器工作原理及实践,本次内容来看一下TCP协议确保文件完整的送到至浏览器 First Page 是指页面加载到首次开始绘制的时长,而影响这个性能指标的一个重要原因是网络加载速度,网络传输协议无论使用http还是websocket,都是基于TCP/IP的,所以有必要了解一下TCP/IP,对于web的性能调优和问题定位都有很