前端 JS 经典:Web 性能指标

什么是性能指标:Web Performance Metrics 翻译成 Web 性能指标,一般和时间有关系,在短时间内做更多有意义的事情。

一个站点表现得好与不好,标准在于用户体验,而用户体验好不好,有一套 RAIL 模型来衡量。这个 RAIL 模型可以衡量一个站点用户体验到底好不好。那什么是 RAIL 模型勒,里面有 4 个单词:

| Response 响应:你这个网站的响应速度是不是足够的快。

| Animation 动画:你这站点的动画是不是足够丝滑,有没有跳帧,有没有丢帧。

| Idle 空闲:你这个站点是不是给用户留够了足够的空闲时间窗口,什么叫空闲,就这时间内没有什么 JS 代码运行,没有阻塞主线程,因为只有空闲时间足够,用户才能跟这个网站进行交互,不然你点一下就卡住了。

| Load 加载:页面上 DOM 元素过多,导致解析的时间变长,就会影响加载的时间。通过这四个方面进行整体的评价。

而 RAIL 模型是个模糊的概念,我们可以借助 LightHouse 可以将性能数据化。LightHouse 是浏览器很重要的插件,是对站点页面进行分析的插件,使用 f12 打开调试工具,并将调试工具漂浮起来,因为如果是附着状态会改变浏览器窗口大小,分析的时候就会不准。

 漂浮出来后,配置可以保持默认,直接点击按钮开始分析,分析的时候会刷新我们的页面,对整个页面的性能指标进行分析。

分析结果如下,博主的网站是有那么一点点瑕疵,需要优化一下。

 往下滑还可以看到一些具体的指标

要看懂这些指标,就需要知道这些指标什么意思。

First Contentful Paint 简称 FCP:首次内容绘制,就是白屏到第一次出现有意义的内容,这段时间就是 FCP。

Largest Contentful Paint 简称 LCP:最大内容绘制出来的时间,就是一个视口里面最大的元素往往是最重要的元素,最大元素出现的时间节点就需要去衡量它了。

Total Blocking Time 检查 TBT:指的是 FCP 期间,用户点击了按钮,但是页面没有完全加载,等到页面完全加载,然后页面对用户点击做出反应,这段时间叫 TBT,TBT 时间当然是越短越好。

Cumulative Layout Shift 简称 CLS:累计偏移,就比如你本来想点击一个按钮,点击的时候,又有一个按钮冒出来,让你要点击的按钮偏移下去了,点错了按钮。

Speed Index 简称 SI:总体的速度指标,是总体的综合衡量。

这些就是我们常见的 Web 性能指标,而现在这些指标都是实验室指标,那什么是实验室指标,就是这些性能指标是针对我们开发者的电脑、配置、浏览器的,而到用户那边,就可能有不同的结果。

所以实验室指标只能作为参考,真正有意义的指标是要去收集用户那一侧的数据,这就涉及到服务监控和数据埋点。就是我们写一段程序。注入到这个页面当中,当用户访问我们的站点的时候,那段代码就会在用户那端来进行运行,在运行的过程中就会收集用户的指标发送到我们数据监控的服务器,那怎么来收集勒,可以使用第三方 API,比如 Web Vitals。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot的网盘系统设计与实现

第1章 绪论... 1 1.1 研究背景与意义... 1 1.1.1 研究背景... 1 1.1.1 研究意义... 1 1.2 国内外研究现状... 2 1.2.1 国内研究现状... 2 1.2.2 国外研究现状... 3 1.3 论文组织架构... 4 第2章 关键技术介绍... 5 2.1 SpringBoot. 5 2.2 MySQL数据库... 5 2.3 MVC架…

Altium Designer 中键拖动,滚轮缩放,并修改缩放速度

我的版本是AD19,其他版本应该都一样。 滚轮缩放 首先,要用滚轮缩放,先要调整一下AD 设置,打开Preferences,在Mouse Wheel Configuration 里,把Zoom Main Window 后面Ctrl 上的对勾取消掉,再把…

下载和安装AD19 - Altium Designer 19.1.9 Build 167

虽然有AD24 的安装资源,但是我比较喜欢19 这个数字[doge] 下载 仍然是从毛子网站源头进货:https://rutracker.net/forum/viewtopic.php?t5754276,网盘: https://pan.baidu.com/s/1ic31N4h7HS2FBu7JFll0YQ?pwdvjum 提取码: vjum 安装 压…

IDEA主题Drcula个性化改造

Darcula 主题整体色调看着舒服,但是代码区分不直观,比如直接看代码是看不出这个这个是类、接口、抽象类、枚举还是啥,而且左侧图标也很难区分。 该主题基于Darcula主题对类、接口、抽象类、注解在编辑区按颜色做了区分,同时图标也…

Nature期刊的等级和分类

Nature期刊不用过多介绍,学术界人员都对其有所了解,可以和Science,Cell比肩,Nature旗下创办了很多子刊,系列期刊有一百多种,当然其含金量各有不同,nature旗下的期刊等级你是否都了解了。 Nature…

通过继承React.Component创建React组件-5

在React中,V16版本之前有三种方式创建组件(createClass() 被删除了),之后只有两种方式创建组件。这两种方式的组件创建方式效果基本相同,但还是有一些区别,这两种方法在体如下: 本节先了解下用extnds Reac…

题解:CF1016E Rest In The Shades

题意 平面上有一个点光源 s s s 并以每秒 1 1 1 单位长度的速度从点 ( a , s y ) (a,sy) (a,sy) 移动到点 ( b , s y ) (b,sy) (b,sy)&#xff0c;其中 s y < 0 sy<0 sy<0&#xff1b;在 x x x 轴正方向上有 n n n 不相交、不接触的挡板&#xff0c;第 i i i …

ESP32烧录AT固件并进行MQTT通讯

首先下载AT固件 发布的固件 - ESP32 - — ESP-AT 用户指南 latest 文档 下载烧录工具 下载指导 - ESP32 - — ESP-AT 用户指南 latest 文档 烧录后注意usb的串口是不能发AT指令的 需要用16和17脚 用AT指令确认OK后连WIFI ATCWMODE1 //设置客户端模式 ATCWLAP …

CSS伪类实现input聚焦时,上层div样式改变

CSS伪类实现input聚焦时&#xff0c;上层div样式改变 可以使用:focus-within伪类选择器&#xff0c;它会在div内的任何元素获得焦点时选择该div&#xff0c;明确的是&#xff0c;获得焦点和被点击是不相等的&#xff0c;div能被点击&#xff0c;但是不能获得焦点&#xff0c;也…

Kubernetes部署dashboard

Kubernetes部署dashboard Kubernetes集群安装 鲲鹏arm64架构下安装KubeSphere linux安装部署k8s(kubernetes)和解决遇到的坑 dashboard部署 $ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashbo…

Qt学习记录(14)线程

前言&#xff1a; 我的臀部已经翘到可以顶起一屁股债了 为什么要使用线程 什么时候用线程 复杂的数据处理 头文件.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimer>//定时器头文件QT_BEGIN_NAMESPACE namespace Ui { class Widget; }…

Unity功能——设置Camera,实现玩家被攻击后晃动效果

一、方法说明&#xff1a; 来源&#xff1a;siki学院&#xff1a;Unity项目捕鱼达人&#xff0c;功能学习记录&#xff1b; 效果摘要&#xff1a;通过调整相机移动&#xff0c;视觉感觉玩家面板剧烈晃动&#xff0c;实现被boss攻击时的震动效果。 使用场景说明&#xff1a; …

串口中断原理及实现

一、串口的原理 SM0、SM1——串行口工作模式 SM0SM1模式特点00模式0移位寄存器方式&#xff0c;用于I/O口扩展01模式18位UART,波特率可变10模式29位UART,波特率为时钟频率/32或/6411模式39位UART,波特率可变 TI、RI——发送、接收中断标志位 TITI0 允许发送>TI1 发送完成后…

python:__set_name__使用

python&#xff1a;__set_name__使用 1 前言 在Python中&#xff0c;我们可以通过__set_name__方法来实现一些特殊的操作。该方法是在定义类的时候被调用&#xff0c;用于设置属性的名称。这样一来&#xff0c;我们就可以在类定义中动态地获取属性的名称&#xff0c;从而更好…

【408精华知识】指令的寻址方式

文章目录 一、指令寻址&#xff08;一&#xff09;顺序寻址&#xff08;二&#xff09;跳跃寻址 二、数据寻址&#xff08;一&#xff09;隐含寻址&#xff08;二&#xff09;立即&#xff08;数&#xff09;寻址&#xff08;三&#xff09;直接寻址&#xff08;四&#xff09;…

在ubuntu22.04里网站源码连不上mysql数据库

在ubuntu22.04里网站源码连不上mysql数据库。后来找到了原因。 连不上的时候有报错信息&#xff1a; ERROR 1698 (28000): Access denied for user rootlocalhost 用在网上搜索该报错信息&#xff0c;找到了两篇有用的文章&#xff0c;用这两篇文章里的处理方法解决了问题。 …

HCIP-Datacom-ARST自选题库__ISIS简答【3道题】

1.IS-1S是链路状态路由协议&#xff0c;便用SPF算法进行路由计算。某园区同时部署了IPv4和IPV6井运行IS-IS实现网络的互联互通&#xff0c;如图所示&#xff0c;该网络IPv4和IPV6开销相同&#xff0c;R1和R4只支持IPV4。缺省情况下&#xff0c;计算形成的IPv6最短路径树中&…

深入理解 Mysql 分层架构:从存储引擎到查询优化器的内部机制解析

一、基础架构 1.连接器 1.会先连接到这个数据库上&#xff0c;这时候接待你的就是连接器。连接器负责跟客户端建立连接、获取权限、维持和管理连接 2.用户密码连接成功之后&#xff0c;会从权限表中拿出你的权限&#xff0c;后续操作权限都依赖于此时拿出的权限,这就意味着当链…

vue 表单些某项 v-if 控制后,想在显示时添加验证

效果: 可以为<el-form-item>添加 key 然后prop正常写就行 (key需要唯一值) <el-form-item label"设置" v-if"advanced_setting" key"threshold" prop"threshold"><el-inputv-model"form_Warning.threshold"p…

亲测使用frp获得访问者真实ip

怎么访问都只有127.0.0.1这个内网ip,获取不到访问者的真实ip 1.打开frp的配置文件(一般是frpc.toml&#xff0c;无需设置frps.toml) 在每一个tcp协议中添加 transport.proxyProtocolVersion "v2" 实例&#xff1a; # frpc.toml [[proxies]] name "web" …