Chrome控制台 网站性能优化指标一览
打开chrome-》f12/右键查看元素-》NetWrok/网络
ctrl+F5 刷新网页,可以看到从输入url到页面资源请求并加载网页,用于查看资源加载,接口请求,评估网页、网站性能等,如下图:
request、stransferred、resources 的含义
request()代表请求数量:点击上面可以单独查看各个request类型下的请求,request类型包含:xhr and fetch(接口请求)、Document、css、javaScript、Font、Image、Media、Manifest、web Socket、WebAssembly、other;
stransferred(transferred over network):通过网络加载的资源大小。
标识请求的资源的传输,可以看到资源大小
resources(resources loaded by the page):统计的是前端页面加载的所有资源经过解压之后的原始大小。
【
以上说明来自Google官网: https://developers.google.com/web/tools/chrome-devtools/network/reference#uncompressed
https://stackoverflow.com/questions/56043151/what-is-the-difference-between-transferred-and-resources-in-chrome-devtools
】
DOMContentLoaded 和 Load 和 Finish的含义和区别
DOMContentLoaded:DOM树构建完成。 即HTML页面由上向下解析HTML结构到末尾封闭标签。
Load:页面加载完毕。 DOM树构建完成后,继续加载html/css 中的图片资源等外部资源,加载完成后视为页面加载完毕。
DOMContentLoaded 会比 Load 时间小,两者时间差大致等于外部资源加载的时间。
Finish: 是页面上所有 http 请求发送到响应完成的时间, HTTP1.0/1.1 协议限定,单个域名的请求并发量是 6 个,即 Finish 是所有请求(不只是XHR请求,还包括DOC,img,js,css等资源的请求)在并发量为6的限制下完成的时间。
Finish 的时间比 Load 大,意味着页面有相当部分的请求量,
Finish 的时间比 Load 小,意味着页面请求量很少,如果页面是只有一个 html文档请求的静态页面,Finish时间基本就等于HTML文档请求的时间。
页面发送请求和页面解析文档结构,分属两个不同的线程,
Performance
Lighthouse
Lighthouse 是 Google 开发的一款工具,用于分析网络应用和网页,收集现代性能指标并提供对开发人员最佳实践的意见。为 Lighthouse 提供一个需要审查的网址,它将针对此页面运行一连串的测试,然后生成一个有关页面性能的报告。
Lighthouse报告分析
Lighthouse生成的分析报告,首先会根据自定义勾选的需要测试的指标进行总的打分(下图标1处,可以把分析报告进行导出结果等操作)。
Lighthouse 会对选择进行分析的维度给出一个的评估得分,分值范围0-100。
评分主要分为三个档次,分别用红黄绿三种颜色代表:
0 – 49(慢):红色
50 – 89(平均值): 橙色
90 – 100(快): 绿色
如果得分能达到 90 分以上(绿色),则说明网站应用在该方面的评估表现符合最佳实践。⚠️注: 如果没有分数或得分为 0,则很有可能是检测过程发生了错误,比如网络连接状况异常等。
点击 See calculator
,查看具体打分规则如下:
1、Metrics指标说明
指标名称 | 说明 |
---|---|
首次内容绘制FCP (First Contentful Paint) | 浏览器首次绘制来自 DOM 的内容的时间,内容必须是文本、图片(包含背景图)、非白色的 canvas 或 SVG,也包括带有正在加载中的 Web 字体的文本。 这是用户第一次开始看到页面内容,但仅仅有内容并不意味着它是有用的内容(如 Header、导航栏等)。 |
最大的内容绘制LCP (Largest Contentful Paint) | 可视区域中最大的内容元素呈现到屏幕上的最长时间,用以估算页面的主要内容对用户可见时间。 LCP 考虑的元素包括: 元素 、元素内的 <svg> 元素 、元素、通过 url() 函数加载背景图片的元素、包含文本节点或其他内联文本元素子级的块级元素。 |
可交互时间TTI (Time to Interactive) | 指的是所有的页面内容都已经成功加载,且能够快速地对用户的操作做出反应的时间点。 网页第一次完全达到可交互状态的时间点,浏览器已经可以持续性的响应用户的输入。 完全达到可交互状态的时间点是在最后一个长任务(Long Task)完成的时间,并且在随后的 5 秒内网络和主线程是空闲的。 |
总阻塞时间TBT (Total Blocking Time) | 表示此次分析过程中遇到的阻塞时间。 度量了 FCP 和 TTI 之间的总时间,在该时间范围内,主线程被阻塞足够长的时间以防止输入响应。 只要存在长任务,该主线程就会被视为“阻塞”,该任务在主线程上运行超过 50 毫秒(ms)。 |
累积布局偏移CLS (Cumulative Layout Shift) | CLS 会测量在页面整个生命周期中发生的每个意外的布局移位的所有单独布局移位分数的总和,它是一种保证页面的视觉稳定性从而提升用户体验的指标方案。 |
速度指标SI (Speed Index) | 衡量首屏可见内容绘制在屏幕上的速度。在首次加载页面的过程中尽量展现更多的内容,往往能给用户带来更好的体验,所以速度指标的值约小越好。 |
其他指标:
指标名称 | 说明 |
---|---|
首次CPU闲置FCI (First CPU Idle) | 指在页面加载期间,当页面的主要内容已经完成加载并且JavaScript代码已经执行完毕后,浏览器第一次空闲的时间点。 在这个时间点之后,页面可以响应用户的交互操作,比如点击按钮或输入文本。 |
首次绘制FP (First paint) | 指浏览器首次将像素渲染到屏幕上的时间点,也就是页面的第一个像素点被绘制的时间。 |
首次有效绘制FMP (First Meaningful Paint) | 浏览器在加载网页时,第一次将主要内容呈现给用户的时间点。 这个时间点通常是用户感知到页面加载速度的关键点之一,用户可以看到页面上的一些内容,并开始与页面进行交互。 FMP是通过一个算法来猜测某个时间点的,所以可能不准确,且在 Lighthouse 6.0中,FMP指标已被弃用。 |
文档内容加载完成DCL (DOMContentLoaded ) | DCL 指的是HTML文档中的DOM树构建完成、CSS文件加载完成并解析、JavaScript文件加载完成并执行的时间点,它表示网页的主要内容已经加载完成,可以开始进行交互和操作。 |
首次输入延迟FID (First Input Delay) | 测量从用户第一次与页面交互,直到浏览器对交互作出响应,并实际能够开始处理事件处理程序所经过的时间。FID 测量页面加载期间响应度,它针对的交互是不连续操作对应的输入事件,如点击、轻触和按键。其他诸如滚动和缩放之类的交互属于连续操作并不包含在她的测量内。 |
2、指标衡量标准
模式名称 | 绿色快 | 中 | 慢 |
---|---|---|---|
首次内容绘制 FCP (First Contentful Paint) | 0–1.8(s) | 1.8–3 | > 3 |
最大的内容绘制 FCP (Largest Contentful Paint) | 0–2.5(s) | 2.5-4 | > 4 |
可交互时间 TTI (Time to Interactive) | 0–3.8(s) | 3.9–7.3 | > 7.3 |
总阻塞时间 TBT (Total Blocking Time) | 0–200(ms) | 200-600 | > 600 |
累积布局偏移 CLS (Cumulative Layout Shift) | 0–0.1(比例) | 0.1-0.25 | > 0.25 |
速度指标 SI (Speed Index) | 0-3.4(s) | 3.4-5.8 | > 5.8 |
首次CPU闲置 FCI( First CPU Idle) | 0–4.7(s) | 4.8-6.5 | > 6.5 |
首次有效绘制 FMP First Meaningful Paint | 0–2(s) | 2-4 | > 4 |
最大潜在首次输入延迟 MPFID Max Potential First Input Delay | 0–130(ms) | 130-250 | > 250 |
最大内容绘制 LCP (Largest Contenttful Paint) | 0–2.5(s) | 2.5-4 | >4 |
3、改进建议
Opportunity的建议可以帮助更快地加载页面,但它们不会直接影响性能得分。
常见的可改进项有如下:
- Use HTTP/2 ,HTTP/2 提供了许多优于 HTTP/1.1 的优点,包括二进制标头和多路复用。即现在用的是 HTTP/1.1,建议使用 HTTP/2。需要服务端配合改,目前不支持。
- Minifying JavaScript ,精简js代码。
- Reduce unused JavaScript ,减少未使用的 JavaScript 并推迟加载脚本,直到需要时才加载,以减少网络活动消耗的字节数(LCP)。即:删除无用的 JS,主要方法就是合理的代码分割和按需引入。
- Enable text compression,基于文本的资源应该使用压缩(gzip等),以最小化网络总字节数(FCP,LCP)。即:配置 gzip压缩。
- Eliminate render-blocking resources,列出了阻止页面首次绘制的所有 URL(FCP,LCP),通过内联关键资源、推迟非关键资源和删除任何未使用的内容来减少这些阻止渲染的 URL 的影响。即:合理加载资源,控制加载顺序。
如何识别关键资源:使用 Chrome DevTools 中的 Coverage 选项卡来识别非关键 CSS 和 JS。当加载或运行页面时,该选项卡可以分析使用了多少代码,以及加载了多少代码,绿色(关键),红色(非关键 )
如何消除渲染阻塞脚本:合理使用 async 或 defer 属性标记
如何消除阻塞渲染的样式表:可使用 preload 链接异步加载其余样式,可查看推迟非关键 CSS
4、Diagnostics
(诊断)
5、PASSED AUDITS
( 审核通过)
列举了在性能优化方面做的比较好的地方,常见项及说明如下(其实做性能优化的时候就可以参照这些方面):
- Properly size images:适当大小的图像,避免字节浪费而减慢页面加载时间
- Defer offscreen images:屏幕外图像延迟加载
- Minify CSS:缩小 CSS 文件,减少网络负载大小
- Minify JavaScript:缩小 JS 文件,减少有效负载大小和脚本解析时间
- Reduce unused CSS:删除未使用的 CSS
- Efficiently encode images:有效地图片编码和优化
- Serve images in next-gen formats:以下一代格式提供图像
- Enable text compression:启用文本压缩
- Preconnect to required origins:预连接到所需的源
- Initial server response time was short:初始服务器响应时间很短
- Avoid multiple page redirects:避免多个页面重定向
- Preload key requests:预加载关键请求
- Use video formats for animated content:用视频替换动画 GIF
- Remove duplicate modules in JavaScript bundles:删除 JavaScript 包中的重复模块
- Avoid serving legacy JavaScript to modern browsers:避免向现代浏览器提供旧版 JavaScript
- Preload Largest Contentful Paint image:预加载最大的内容绘制
- Avoids enormous network payloads:避免巨大的网络负载
- Uses efficient cache policy on static assets:对静态资产使用高效的缓存策略
- Avoids an excessive DOM size:避免过大的 DOM 元素
- User Timing marks and measures:用户计时标记和度量
- JavaScript execution time:JavaScript 执行时间
- Minimizes main-thread work:最小化主线程工作
- All text remains visible during webfont loads:在 webfont 加载期间所有文本保持可见
- Minimize third-party usage:尽量减少第三方使用
- Lazy load third-party resources with facades:延迟加载第三方资源
- Uses passive listeners to improve scrolling performance:使用被动侦听器来提高滚动性能
- Avoids document.write():避免使用 document.write()
- Image elements have explicit width and height:图像元素应具有明确的宽度和高度
6、可访问性(Accessibility)
Accessibility 辅助功能 : 主要针对无障碍设计,也称为网站可达性,是指所创建的网站对所有用户都可用/可访问,不管用户的生理/身体能力如何、不管用户是以何种方式访问网站。
参考文章:Lighthouse(灯塔)—— Chrome浏览器强大的性能测试工具_chrome lighthouse-CSDN博客
Google dev开发指南: web.dev/
如何看vue首页的加载速度 • Worktile社区
network其他模块介绍参考: Chrome DevTools谷歌浏览器开发者工具评估资源加载时间
相关文章:

Chrome控制台 网站性能优化指标一览
打开chrome-》f12/右键查看元素-》NetWrok/网络 ctrlF5 刷新网页,可以看到从输入url到页面资源请求并加载网页,用于查看资源加载,接口请求,评估网页、网站性能等,如下图: request、stransferred、resour…...

Typora创建markdwon文件的基础语法
标题的创建 使用#空格xxx 可使xxx为标题,同时第一标题为#空格标题;第二标题为##空格标题2。以此类推最多可创建六个标题。 同时按住Ctrl1可创建第一标题,同时按住Ctrl2可创建第二标题,以此类推,最多可创建六个标题。也…...

《嵌入式硬件设计》
一、引言 嵌入式系统在现代科技中占据着至关重要的地位,广泛应用于消费电子、工业控制、汽车电子、医疗设备等众多领域。嵌入式硬件设计作为嵌入式系统开发的基础,直接决定了系统的性能、可靠性和成本。本文将深入探讨嵌入式硬件设计的各个方面ÿ…...

【AIGC】大模型面试高频考点-位置编码篇
【AIGC】大模型面试高频考点-位置编码篇 (一)手撕 绝对位置编码 算法(二)手撕 可学习位置编码 算法(三)手撕 相对位置编码 算法(四)手撕 Rope 算法(旋转位置编码…...

如何使用 SQL 语句创建一个 MySQL 数据库的表,以及对应的 XML 文件和 Mapper 文件
文章目录 1、SQL 脚本语句2、XML 文件3、Mapper 文件4、启动 ServiceInit 文件5、DataService 文件6、ComplianceDBConfig 配置文件 这个方式通常是放在项目代码中,使用配置在项目的启动时创建表格,SQL 语句放到一个 XML 文件中。在Spring 项目启动时&am…...

Unity性能优化---动态网格组合(二)
在上一篇中,组合的是同一个材质球的网格,如果其中有不一样的材质球会发生什么?如下图: 将场景中的一个物体替换为不同的材质球 运行之后,就变成了相同的材质。 要实现组合不同材质的网格步骤如下: 在父物体…...

JVM学习《垃圾回收算法和垃圾回收器》
目录 1.垃圾回收算法 1.1 标记-清除算法 1.2 复制算法 1.3 标记-整理算法 1.4 分代收集算法 2.垃圾回收器 2.1 熟悉一下垃圾回收的一些名词 2.2 垃圾回收器有哪些? 2.3 Serial收集器 2.4 Parallel Scavenge收集器 2.5 ParNew收集器 2.6 CMS收集器 1.垃圾…...

GPS模块/SATES-ST91Z8LR:电路搭建;直接用电脑的USB转串口进行通讯;模组上报定位数据转换地图识别的坐标手动查询地图位置
从事嵌入式单片机的工作算是符合我个人兴趣爱好的,当面对一个新的芯片我即想把芯片尽快搞懂完成项目赚钱,也想着能够把自己遇到的坑和注意事项记录下来,即方便自己后面查阅也可以分享给大家,这是一种冲动,但是这个或许并不是原厂希望的,尽管这样有可能会牺牲一些时间也有哪天原…...

什么是TCP的三次握手
TCP(传输控制协议)的三次握手是一个用于在两个网络通信的计算机之间建立连接的过程。这个过程确保了双方都有能力接收和发送数据,并且初始化双方的序列号。以下是三次握手的详细步骤: 第一次握手(SYN)&…...

《Clustering Propagation for Universal Medical Image Segmentation》CVPR2024
摘要 这篇论文介绍了S2VNet,这是一个用于医学图像分割的通用框架,它通过切片到体积的传播(Slice-to-Volume propagation)来统一自动(AMIS)和交互式(IMIS)医学图像分割任务。S2VNet利…...

Linux ifconfig ip 命令详解
简介 ifconfig 和 ip 命令用于配置和显示 Linux 上的网络接口。虽然 ifconfig 是传统工具,但现在已被弃用并被提供更多功能的 ip 命令取代。 ifconfig 安装 sudo apt install net-toolssudo yum install net-tools查看所有活动的网络接口 ifconfig启动/激活网络…...

Vue3 对于echarts使用 v-show,导致显示不全,宽度仅100px,无法重新渲染的问题
参考链接:解决Echarts图表使用v-show,显示不全,宽度仅100px的问题_echarts v-show图表不全-CSDN博客 Vue3 echarts v-show无法重新渲染的问题_v-show echarts不渲染-CSDN博客 原因不多赘述了,大概就是v-show 本身是结构已经存在,当数据发生…...

C++实现俄罗斯方块
俄罗斯方块 还记得俄罗斯方块吗?相信这是小时候我们每个人都喜欢玩的一个小游戏。顾名思义,俄罗斯方块自然是俄罗斯人发明的。这人叫阿列克谢帕基特诺夫。他设置这个游戏的规则是:由小方块组成的不同形状的板块陆续从屏幕上方落下来…...

鸿蒙分享:添加模块,修改app名称图标
新建公共模块common 在entry的oh-package.json5添加dependencies,引入common模块 "dependencies": {"common": "file:../common" } 修改app名称: common--src--resources--string.json 新增: {"name&q…...

扫描IP段内的使用的IP
扫描IP段内的使用的IP 方法一:命令行 命令行进入 for /L %i IN (1,1,254) DO ping -w 1 -n 1 192.168.3.%iarp -a方法二:python from scapy.all import ARP, Ether, srp import keyboarddef scan_network(ip_range):# 创建一个ARP请求包arp ARP(pds…...

【专题】虚拟存储器
前文提到的存储器管理方式有一个共同的特点,即它们都要求将一个作业全部装入内存后方能运行。 但有两种特殊情况: 有的作业很大,其所要求的内存空间超过了内存总容量,作业不能全部被装入内存,致使该作业无法运行&#…...

Python之爬虫入门--示例(2)
一、Requests库安装 可以使用命令提示符指令直接安装requests库使用 pip install requests 二、爬取JSON数据 (1)、点击网络 (2)、刷新网页 (3)、这里有一些数据类型,选择全部 (…...

5G CPE终端功能及性能评测(四)
5G CPE 功能性能评测 本文选取了几款在工业应用领域应用较多的5G CPE,对其功能和性能进行了对比评测。功能方面主要对比了网络接口数量,VPN功能 支持情况。以下测试为空口测试,测试结果受环境影响较大,性能仅供参考。总体看,高通X55芯片下行最优,速率稳定。 功能 对比CPE…...

人工智能驱动的骗局会模仿熟悉的声音
由于人工智能技术的进步,各种现代骗局变得越来越复杂。 这些骗局现在包括人工智能驱动的网络钓鱼技术,即使用人工智能模仿家人或朋友的声音和视频。 诈骗者使用来自社交媒体的内容来制作深度伪造内容,要求提供金钱或个人信息。个人应该通过…...

电子病历静态数据脱敏路径探索
一、引言 数据脱敏(Data Masking),屏蔽敏感数据,对某些敏感信息(比如patient_name、ip_no、ad、no、icd11、drug等等 )通过脱敏规则进行数据的变形,实现隐私数据的可靠保护。电子病历作为医疗领…...

混合云策略在安全领域受到青睐
Genetec 发布了《2025 年物理安全状况报告》,该报告根据超过 5,600 名该领域领导者(其中包括 100 多名来自澳大利亚和新西兰的领导者)的回应,揭示了物理安全运营的趋势。 报告发现,澳大利亚和新西兰的组织采用混合云策…...

Echarts使用平面方法绘制三维立体柱状图表
目录 一、准备工作 1.下载引入ECharts库 2.创建容器 二、绘制基本柱状 三、绘制立体柱状方法一 1.定义立方体形状 2.注册立方体形状 3.配置custom系列 4.设置数据 5.渲染图表 四、绘制立体柱状方法二 1.画前知识 2.计算坐标renderItem 函数 (1&#x…...

java-判断语句
题目一:选择练习1 657. 选择练习1 - AcWing题库 代码 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int a sc.nextInt(), b sc.nextInt();int c sc.nextInt(), d sc.nextInt();…...

11.14【JAVA EXP3】【DEBUG】
比较疑惑的一点是当前页面(资源的url)与请求的url? 请求的url由webService接收,servelt当中也可以发送出这个url 进行页面跳转,是跳转到某个Jsp页面,这个页面的url是在哪里定义的? 在Jsp打印信息,这个报…...

UE5 和 UE4 中常用的控制台命令总结
调用控制台 按下键盘上的 ~ 键可以调用控制台命令。 技巧 使用键盘的 ↑ 键可以查看之前输入过的指令。控制台指令并不需要打全名,输入空格后跟随指令的部分字符可以进行模糊搜索。按下 Ctrl Shift , 打开 GPUProfile 面板。 命令如下: 调试类 s…...

MR30分布式IO模块赋能喷水织机
纺织行业作为我国传统支柱产业,历经数千年的演变,如今仍面临着诸多困境,在纺织行业中,每一次技术的飞跃都是对行业边界的勇敢探索。在纺织行业,喷水织机作为关键生产设备,其性能直接影响到产品质量和产能。…...

C++中的封装性
定义: 封装性: 1.将属性(成员变量)和行为(成员函数)作为一个整体,表现在生活中的事物 2.将属性和行为加以权限控制 (将事物的属性(成员变量)和行为&#…...

PyTorch 深度学习框架简介:灵活、高效的 AI 开发工具
PyTorch 深度学习框架简介:灵活、高效的 AI 开发工具 PyTorch 作为一个深度学习框架,以其灵活性、可扩展性和高效性广受欢迎。无论是在研究领域进行创新实验,还是在工业界构建生产级的深度学习模型,PyTorch 都能提供所需的工具和…...

leetcode-22.括号生成
暴力 感谢分享这个思路和算法。生成括号的问题可以通过生成所有可能的括号序列并验证其有效性来解决。以下是对该思路的详细解释和实现: 思路 生成所有可能的序列: 使用递归生成所有长度为 2n 的括号序列。在每个位置可以选择放置 ( 或 )。 验证序列的…...

devops-Dockerfile+Jenkinsfile方式部署Java前后端应用
文章目录 概述部署前端Vue应用一、环境准备1、Dockerfile2、.dockerignore3、nginx.conf4、Jenkinsfile 二、Jenkins部署1、新建任务2、流水线3、Build Now 构建 & 访问 Springboot后端应用1. 准备工作2. 创建项目结构3. 编写 Dockerfile后端 Dockerfile (backend/Dockerfi…...