前端知识1-4:性能优化进阶

性能优化进阶

Navigation Timing API

在这里插入图片描述

  1. navigationStart / end
    表示从上一个文档卸载结束时 => 如果没有上一个文档,这个值和fetchStart相等

  2. unloadEventStart / end
    标识前一个网页unload的时间点

  3. redirectStart / end
    第一个http重定向发生和结束的时间

  4. fetchStart
    浏览器准备好使用请求获取文档的时间

(from cache)

  1. domainLookupStart / end
    HTTP开始建立连接的时间

  2. connectStart / end
    TCP开始建立连接的时间

  3. secureConnectionStart
    HTTPS连接开始的时间

  4. requestStart / end

  5. responseStart / end

  6. domLoading
    开始解析渲染DOM树的时间 => readyState变成loading => readystatechange

  7. domInteractive
    完成解析 => dom树解析完成时间

  8. domContentLoadedEventStart / end
    加载网页内资源的时间

  9. domComplete
    Dom完全解析完成

    <script>javascript:(() => {var perfData = window.performance.timing;var pageLoadTime = perfData.domComplete - perfData.navigationStart;console.log("页面加载耗时:", pageLoadTime, 'ms');})();</script>
Core Web Vitals - 网页核心的性能指标
  • Google,每个CWV代表用户体验的一个不同方面 —— 加载、交互、视觉稳定性
Largest Contentful Paint(LCP)

衡量装载性能:LCP应该再页面首次开始加载后2.5s内发生

  • 前2.5s进行最大内容的渲染

a. 最大内容包含了哪些?

  • img
  • svg
  • video
  • 通过url函数加载的背景图片元素
  • 包含了大块内嵌内容的块级元素

b. LCP值低下的原因

  • 服务器响应慢
  • 阻断渲染的Javascript | CSS
  • 资源的加载时间过长
  • 客户端渲染机器的影响

c. 针对性的改造

  • 服务器优化

    缓存HTML离线页面,缓存页面资源,减少浏览器直接对资源的请求
    => 缓存机制对图片的优化,进行图片合理化使用,降低图片大小,加快请求速度
    => 图片上传格式 | 云资源管理对图片的优化,进行图片合理化使用,降低图片大小,加快请求速度
    => 图片上传格式 | 云资源管理  重写、压缩、注释过滤……减少最终文件大小,加快加载速度
    => webpack vite 工程化打包
    
  • 渲染阻断优化

    CSS + JS => 延迟处理
    首屏优化 => 懒加载、异步加载
    CSS模块优化
    SSR服务端渲染
    
First Input Delay(FID)-- 执行阻塞

衡量交互性,页面的FID应该小于100ms

  • 页面首次输入延迟应该小于100ms

a. 减少JS的执行时间

  • 缩小压缩JS文件

  • 延迟加载不需要的JS

    => 模块懒加载 | tree shaking
    
  • 尽量减少未使用的polyfill

b. 分解耗时任务

  • 减少长逻辑
  • 异步化

c. worker
web worker | service worker

// 1. web worker
// main.js
// 新增worker
const myWorker = new Worker('worker.js');// 与main thread之间通信
myWorker.postMessage('hello');
myWorker.onmessage = function(e) {console.log(e.data);
}// worker.js
// 接受消息
self.onmessage = function(e) {console.log(e.data);// 回调逻辑let workResult = '';self.postMessage(workResult);
}// 2. service worker
// main.js
navigator.serviceWorker.register('./service-worker.js');// service-worker.js
self.addEventListener('install', function(event) {//...
})
self.addEventListener('fetch', function(event) {//...
})
Cumulative Layout Shift (CLS)

测量视觉稳定性 - 页面稳定性在加载过程中以及渲染后CLS小于0.1

  • 整体布局的移动可能发生在可见元素从一帧到下一帧改变位置的任何阶段

会带来偏移的因素:图片、内容插入、字体

a. 不使用无尺寸元素
=> srcset & sizes

    <img srcset="yy-320w.jpg 320w,yy-480w.jpg 480wyy-800w.jpg 800w"sizes="(max-width: 320p) 280px(max-width: 480p) 440px800px"src="yy.jpg" alt="yy pic">

b. 整体化内容插入 => 影响整体布局 => 重排 => 重绘

c. 动态字体控制

    // 加载完默认字体再显示 => 先用默认字体渲染,下载完成之后,再替换成后续字体@font-face {src: local('xxx Regular'), url(http:// fonts.xxxx.com/xxx.woff2)}

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

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

相关文章

Hadoop3:HDFS中DataNode与NameNode的工作流程

一、DataNode中的数据情况 数据位置 /opt/module/hadoop-3.1.3/data/dfs/data/current/BP-823420375-192.168.31.102-1714395693863/current/finalized/subdir0/subdir0块信息 每个块信息&#xff0c;由两个文件保存&#xff0c;xxx.meta保存的是数据长度、校验和、时间戳&am…

芝加哥大学最新研究:GPT-4与财务预测,重塑财务分析的未来

最近&#xff0c;芝加哥大学的研究团队发表了一篇突破性的研究&#xff0c;展示了大型语言模型&#xff08;LLM&#xff09;&#xff0c;特别是 OpenAI 开发的 GPT-4&#xff0c;如何在财务报表分析领域取得了与专业分析师相匹配甚至超越的表现。这项研究不仅凸显了人工智能在高…

GDPU Java 天码行空13

&#xff08;一&#xff09;实验目的 1、掌握JAVA中与网络程序开发相关的知识点&#xff1b; 2、理解并掌握网络编程开发思想及方法&#xff1b; 3、熟悉项目开发的分包方法和依据&#xff1b; 4、实现聊天室中客服端和服务器端的实现方法&#xff1b; 5、熟悉多线程程序开发方…

Kinetix5700罗克韦尔AB伺服驱动器维修2198-D020-ERS3

Allen-Bradley罗克韦尔运动控制/伺服驱动器维修Kinetix 5700/Kinetix 6000/Kinetix 5500等系列电机驱动器/运动控制系统维修。 AB驱动器的控制接口有两种类型&#xff1a; 类型1&#xff1a;脉冲接口 类型2&#xff1a;模拟量接口 大部分小型PLC和伺服驱动器的链接方式都是开…

通过vlan实现同一网段下的网络隔离

现有两个电脑通过交换机直接连接在一起 pc1&#xff1a; pc2&#xff1a; 正常状态下是可以ping成功的 现在先进入交换机命令行界面&#xff0c;创建两个vlan <Huawei>system-view Enter system view, return user view with CtrlZ. [Huawei]vlan 10 [Huawei-vlan10…

2024年西安交通大学程序设计校赛

A题 签到题 代码如下 //A #include<iostream> #include<algorithm> #define int long long #define endl \n #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); using namespace std; signed main() {IOSint a,b,c,d;cin>>a>>b>>c…

二叉树介绍及堆

文章目录 树 概念及结构 二叉树 概念及结构 特殊的二叉树 完全二叉树 满二叉树 性质 储存 顺序存储 链式储存 堆 概念及结构 小堆 大堆 建堆 向上调整建堆 向下调整建堆 TOPK问题 法一&#xff1a; 法二&#xff1a; 树 概念及结构 树是一种非线性的数据…

解决word里加入mathtype公式后行间距变大

1.布局>页面设置>文档网格&#xff0c;网格栏选为无网格 2.固定间距

探索标准差与方差的奥秘

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、标准差与方差的基础理解 代码案例 二、标准差与方差的计算方法 方差的计算 标准差的…

QT——QSlider实现,QT滑动控件的使用

目录 简介滑动块调节两种方法滑动条触发信号量理想滑动块运用&#xff08;参考&#xff09; 简介 QT中滑动条的控件叫QSlider&#xff0c;继承自QAbstractSlider类。 主要用途是通过滑块的滑动的方式在一定范围内调节某个值。根据调节的后得到的结果去执行一些处理&#xff0c…

【AI基础】数据获取与整理、打标、增强方法、增强库imgaug

文章目录 常见的数据集网站爬虫工具使用搜索引起图片爬虫视频网站爬虫 数据整理数据检查和清洗数据去重数据集划分 数据标注数据标注工具 label studio 数据增强什么是数据增强单样本数据增强多样本数据增强样本生成方法数据增强imgaugimgaug 操作imgaug 使用 常见的数据集网站…

这款AI绘画软件,带你快速生成高质量产品效果图!

前言 随着人工智能技术的飞速发展&#xff0c;AI在设计领域的应用越来越广泛&#xff0c;。今天&#xff0c;介绍的一款能够自动生成高质量产品效果图的AI绘画软件——STARTAI。这款软件以其强大的功能和便捷的操作&#xff0c;正在重新定义电商产品效果图的制作流程。 AI局部…

RocketMQ .NET

RocketMQ 是一款由阿里巴巴集团开发并开源给Apache软件基金会的分布式消息及流处理平台。以其高吞吐量、低延迟、高可用性等特点而广受欢迎。支持Java&#xff0c;C, Python, Go, .NET等。 异步解耦&#xff1a;可以实现上游和下游业务系统的松耦合设计&#xff0c;使得服务部…

小红书图文笔记怎么做?纯干货!

小红书图文笔记的制作是一门艺术&#xff0c;它需要结合精美的图片和有价值的内容&#xff0c;以吸引和留住用户的注意力。伯乐网络传媒给大家分享制作小红书图文笔记的干货指南&#xff0c;包括准备、制作、发布和优化的各个环节。 一、准备阶段 确定目标受众&#xff1a;找到…

【NumPy】权威指南:使用NumPy的percentile函数进行百分位数计算

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

研学活动报名二维码怎么制作?

在组织研学活动时&#xff0c;老师们经常面临报名流程繁琐、信息收集不全面、统计工作耗时等问题&#xff1f;如何高效地管理学生的报名信息&#xff0c;确保活动顺利进行呢&#xff1f; 现在我们有了更多的选择。老师们可以快速制作出研学活动的研学活动报名二维码怎么制作&am…

DETR整体模型结构解析

DETR流程 Backbone用卷积神经网络抽特征。最后通过一层1*1卷积转化到d_model维度fm&#xff08;B,d_model,HW&#xff09;。 position embedding建立跟fm维度相同的位置编码(B&#xff0c;d_model,HW&#xff09;。 Transformer Encoder,V为fm&#xff0c;K&#xff0c;Q为fm…

非量表题如何进行信效度分析

效度是指设计的题确实在测量某个东西&#xff0c;一般问卷中使用到。如果是量表类的数据&#xff0c;其一般是用因子分析这种方法去验证效度水平&#xff0c;其可通过因子分析探究各测量量表的内部结构情况&#xff0c;分析因子分析得到的内部结构与自己预期的内部结构进行对比…

大模型预训练结果到底是什么?

近日参加一个线下 AI 交流会议&#xff0c;会上有个非本行业的老师提问&#xff1a;“大家说的训练好的大模型到底是什么&#xff1f;是像 Word 软件一样可以直接使用的程序吗&#xff1f;” 这个问题看似简单&#xff0c;却一下把我问住了。的确&#xff0c;我们这些身处 AI 领…

Kafka原生API使用Java代码-生产者-发送消息

文章目录 1、生产者发送消息1.1、使用EFAK创建主题my_topic31.2、根据kafka官网文档写代码1.3、pom.xml1.4、KafkaProducer1.java1.5、使用EFAK查看主题1.6、再次运行KafkaProducer1.java1.7、再次使用EFAK查看主题 1、生产者发送消息 1.1、使用EFAK创建主题my_topic3 1.2、根…