当前位置: 首页 > news >正文

前端知识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)}

相关文章:

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

性能优化进阶 Navigation Timing API navigationStart / end 表示从上一个文档卸载结束时 > 如果没有上一个文档&#xff0c;这个值和fetchStart相等 unloadEventStart / end 标识前一个网页unload的时间点 redirectStart / end 第一个http重定向发生和结束的时间 fetch…...

ios 新安装app收不到fcm推送

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…...

汽美汽修店管理系统会员小程序的作用是什么

汽车后市场汽美汽修赛道同样存在着大量商家&#xff0c;连锁品牌店或个人小店等&#xff0c;门店扎堆且区域覆盖面积广&#xff0c;当然每天车来车往也有不少生意。 随着线上化程度加深和商家不断拓展市场的需要&#xff0c;传统运营模式可能难以满足现状&#xff0c;尤其是年…...

远程自动锁定平面

目录 Ubuntu 系统上 方法一&#xff1a;使用 SSH 重新连接 方法二&#xff1a;解锁当前会话 方法三&#xff1a;通过 SSH 解锁会话 方法四&#xff1a;禁用自动锁屏&#xff08;如果合适&#xff09; windows系统 方法三&#xff1a;修改组策略设置 Ubuntu 系统上 远程…...

鸿蒙Ability Kit(程序框架服务)【UIAbility组件与UI的数据同步】

UIAbility组件与UI的数据同步 基于当前的应用模型&#xff0c;可以通过以下几种方式来实现UIAbility组件与UI之间的数据同步。 [使用EventHub进行数据通信]&#xff1a;在基类Context中提供了EventHub对象&#xff0c;可以通过发布订阅方式来实现事件的传递。在事件传递前&am…...

一个完整的springboot项目,我们还需要做什么

文章目录 一 从0创建Srpingboot项目1.1 启动springboot项目1.2 导入必要的依赖 二、还缺什么2.1 统一异常捕获2.2 统一MVC返回2.3 数据分层2.4 连接数据库模块2.5 放置常量和工具类2.6 基础controller、基础entity、query查询类2.7 为了方便处理异常&#xff0c;一般还可以入参…...

QT-界面居中管理

问题&#xff1a;为什么不能对checkbox直接居中&#xff0c;LineEdit可以 复选框是一个固定大小的控件&#xff0c;不适合填满整个单元格&#xff0c;而相比之下QLineEdit是一个可变大小的控件 关于居中&#xff1a; lineEdit&#xff1a;lineEdit -> setAlignment(QT::Al…...

Python | MATLAB | R 心理认知数学图形模型推断

&#x1f3af;要点 &#x1f3af;图形模型推断二元过程概率&#xff1a;&#x1f58a;模型1&#xff1a;确定成功率 θ 的后验分布 | &#x1f58a;模型2&#xff1a;确定两个概率差 δ \delta δ 的后验分布 | &#x1f58a;模型3&#xff1a;确定底层概率&#xff0c;后验预…...

Linux系统tab键无法补齐命令-已解决

在CentOS中&#xff0c;按下tab键就可以自动补全&#xff0c;但是在最小化安装时&#xff0c;没有安装自动补全的包&#xff0c;需要安装一个包才能解决 bash-completion 1.检查是否安装tab补齐软件包&#xff08;如果是最小化安装&#xff0c;默认没有&#xff09; rpm -q ba…...

数据库之函数、存储过程

函数、存储过程 1.函数 函数&#xff0c;常用于对一个或多个输入参数进行操作&#xff0c;主要目的是返回一个结果值&#xff0c;就是一种方法&#xff0c;在postgre里存放的位置叫function&#xff0c;比如创建一个计算长方面积的函数。 举例&#xff1a;建立一个计算长方形…...

安卓启动 性能提升 20-30% ,基准配置 入门教程

1.先从官方下载demohttps://github.com/android/codelab-android-performance/archive/refs/heads/main.zip 2.先用Android studio打开里面的baseline-profiles项目 3.运行一遍app&#xff0c;这里建议用模拟器&#xff0c;&#xff08;Pixel 6 API 34&#xff09;设备运行&a…...

Linux C/C++目录和文件的更多操作

1.access()库函数 用于判断当前用户对目录或文件的存取权限 #include<unistd.h>int accsee(const char *pathname,int mode);参数说明&#xff1a; pathname //目录或文件名 mode //需要判断的存取权限&#xff0c;在<unistd.h>预定义如下#define R_OK 4 //读权…...

如何高效地向Redis 6插入亿级别的数据

如何高效地向Redis插入亿级别的数据 背景不可用的方案可用方案:利用管道插入其他命令&#xff1a;参考&#xff1a; 背景 上一条记录&#xff1b;80G的存储&#xff1b;10几个文件&#xff0c;如何快速导入是一个大问题&#xff0c;也是一个很棘手的问题&#xff1b;如下将给出…...

中国历年肥料进口数量统计报告

数据来源于国家统计局&#xff0c;为1991年到2021年我国每年肥料进口数量统计。 2021年&#xff0c;我国进口肥料909万吨&#xff0c;比上年减少151万吨。 数据统计单位为&#xff1a;万吨 数据说明&#xff1a; 数据来源于国家统计局&#xff0c;为海关进出口统计数 我国肥料…...

即时通讯视频会议平台,WorkPlus本地化部署解决方案

随着现代科技的快速发展&#xff0c;传统的会议方式已经不再满足企业和组织的需求。即时通讯视频会议以其便利性和高效性&#xff0c;成为了现代企业沟通和协作的重要工具。通过即时通讯视频会议&#xff0c;企业可以实现无时差的交流和远程协作&#xff0c;增强团队合作和提高…...

Java的数据库编程-----JDBC

目录 一.JDBC概念&使用条件&#xff1a; 二.mysql-connector驱动包的下载与导入&#xff1a; 三.JDBC编程&#xff1a; 使用JDBC编程的主要五个步骤&#xff1a; 完整流程1&#xff08;更新update&#xff09;&#xff1a; 完整流程2(查询query)&#xff1a; 一.JDB…...

如何获取SSL证书,消除网站不安全警告

获取SSL证书通常涉及以下几个步骤&#xff1a; 选择证书颁发机构&#xff08;CA&#xff09;&#xff1a; 你需要从受信任的SSL证书颁发机构中选择一个&#xff0c;比如DigiCert、GlobalSign、JoySSL等。部分云服务商如阿里云、腾讯云也提供免费或付费的SSL证书服务。 生成证…...

Unity动画系统介绍

Unity动画系统介绍 Animator组件&#xff1a; 这是Unity中用于控制动画状态的组件&#xff0c;它与Animator Controller一起工作&#xff0c;可以基于游戏逻辑来切换不同的动画状态。 Animator Controller&#xff1a; 这是一个用于管理动画状态机的组件&#xff0c;它允许…...

Three.js-实现加载图片并旋转

1.实现效果 2. 实现步骤 2.1创建场景 const scene new THREE.Scene(); 2.2添加相机 说明&#xff1a; fov&#xff08;视场角&#xff09;&#xff1a;视场角决定了相机的视野范围&#xff0c;即相机可以看到的角度范围。较大的视场角表示更广阔的视野&#xff0c;但可能…...

ACM实训第25天

第四套 第一道&#xff08;修改&#xff09; #include<stdio.h> #include<string.h> int cnt[10]; void count_digits(int n,int* cnt){for(int i1;i<n;i){int numi;while(num){cnt[num%10];num/10;}} } int main(){int t;scanf("%d\n",&t);whi…...

ESXi 重置密码详细攻略(全场景覆盖)

本文详细覆盖 ESXi 所有常见场景的密码重置方法&#xff0c;包括「知道原密码改新密码」「忘记root密码(无vCenter)」「有vCenter管理(企业版)」&#xff0c;步骤拆解到每一步点击和命令输入&#xff0c;适配 ESXi 5.x/6.x/7.x/8.x 全版本&#xff0c;兼顾官方支持方法和实用非…...

为什么选全屋定制,不买成品柜

1&#xff09;为什么选全屋定制&#xff0c;不买成品柜&#xff1f;​ 成品柜尺寸固定&#xff0c;苏州很多户型飘窗、梁位、管道多&#xff0c;放进去丑、浪费空间&#xff01;我们定制严丝合缝&#xff0c;顶天立地&#xff0c;收纳多 30%&#xff0c;颜值统一&#xff0c;和…...

SPIRAN ART SUMMONER图像生成前端展示效果优化技巧

SPIRAN ART SUMMONER图像生成前端展示效果优化技巧 1. 引言 你有没有遇到过这种情况&#xff1a;用SPIRAN ART SUMMONER生成了超棒的图片&#xff0c;但在网站上展示时却加载缓慢&#xff0c;用户还没看到效果就流失了&#xff1f;或者图片显示不完整&#xff0c;影响了整体的…...

河海大学材料科学与工程及材料与化工专业考研复试资料(含《材料分析方法》笔试专项)

温馨提示&#xff1a;文末有联系方式河海大学材料类考研复试资料全面升级 本套资料专为报考河海大学材料科学与工程、材料与化工两个硕士专业的考生设计&#xff0c;聚焦复试核心笔试科目——《材料分析方法》&#xff0c;助力精准高效备考。由2025届一志愿录取考生权威整理 所…...

PyTorch 2.8镜像快速部署:5分钟验证torch.cuda.is_available()并启动API服务

PyTorch 2.8镜像快速部署&#xff1a;5分钟验证torch.cuda.is_available()并启动API服务 1. 镜像概述与环境准备 PyTorch 2.8深度学习镜像是一个开箱即用的高性能计算环境&#xff0c;专为现代AI工作负载优化。这个预配置环境能让你跳过繁琐的安装过程&#xff0c;直接进入模…...

树莓派Pico硬件重置失效?试试这个C语言强制重置方案(附完整代码)

树莓派Pico硬件重置失效&#xff1f;试试这个C语言强制重置方案&#xff08;附完整代码&#xff09; 当你在开发树莓派Pico项目时&#xff0c;可能会遇到这样的情况&#xff1a;硬件重置按钮突然失效&#xff0c;外围设备&#xff08;比如LED&#xff09;无法正常复位。传统的B…...

别让电源拖后腿!手把手教你搞定Xilinx 7系列FPGA(以XC7K325T为例)的供电设计

别让电源拖后腿&#xff01;手把手教你搞定Xilinx 7系列FPGA&#xff08;以XC7K325T为例&#xff09;的供电设计 第一次翻开Xilinx 7系列FPGA的硬件手册时&#xff0c;相信不少工程师都会被密密麻麻的电源轨搞得头晕目眩。VCCINT、VCCBRAM、VCCO、VMGTAVCC...这些看似简单的电压…...

抖音视频批量下载高效解决方案实战指南

抖音视频批量下载高效解决方案实战指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批量下载工具&…...

ABAP - SMW0实现Excel模板下载与数据上传解析全流程指南(附完整代码)

1. 为什么需要Excel模板下载与上传功能 在企业级应用开发中&#xff0c;Excel模板的下载与上传功能几乎是标配。想象一下这样的场景&#xff1a;财务部门需要每月收集各部门的预算数据&#xff0c;如果让每个部门直接在SAP系统里录入&#xff0c;操作复杂且容易出错。而提供一个…...

SerialLCD库深度解析:SerLCD v2.5串口LCD驱动实践

1. SerialLCD 库技术解析&#xff1a;面向嵌入式系统的 SparkFun SerLCD v2.5 串口 LCD 驱动深度实践 1.1 背景与工程定位 SerialLCD 是一个专为 SparkFun SerLCD v2.5 硬件模块设计的轻量级串口 LCD 控制库&#xff0c;其原始实现源自 Arduino.cc Playground 社区维护的 Ser…...