前端性能优化总结

news2024/9/21 11:07:27

这里写目录标题

  • 页面性能测试工具
    • 测试指标
  • 前端页面性能常见的问题
  • 前端页面性能优化常见策略及方案
    • dns优化------预解析域名(异步进行)
    • http请求优化
      • 减少请求次数
      • 同时多开持久连接
  • 前面面试
    • url从输入到确认搜索发生了什么
    • js介绍new一个对象的过程,示例代码如下:
    • 介绍一下this
      • 默认绑定
      • 隐式绑定
      • 显式绑定
    • 介绍一下promise
    • class继承的原理
    • diff算法
    • 事件循环
      • 旧说法先执行微任务
      • W3c新规范任务队列做了细分
      • 调用栈(Call Stack)
      • 事件队列 (Task Queue)

页面性能测试工具

lighthouse -----> Google内置
在这里插入图片描述

测试指标

在这里插入图片描述

webPageTest -----> 在线测试工具
可以选择服务器节点
Google ------> devTools

前端页面性能常见的问题

前端页面性能优化常见策略及方案

dns优化------预解析域名(异步进行)

在这里插入图片描述

http请求优化

减少请求次数

同时多开持久连接

Chrome支持同域名六个, 多域名访问,增加并行链接

http1.1默认就是长连接,Connection:keep-alive 请求头加入
Connection: close (http1.1设置获取资源后断开连接)
http1.1新增管道机制,客户端可以同时发送多个请求(并发请求)(响应不是并发,串行)
http2 没有响应串行限制

http2 多工
HTTP/2复用TCP连接,在-个连接里,客户端和浏览器都可以同时发送多个请求或回应,而且不用按照
顺序一-对应,这样就避免了"队头堵塞"。
这样双向的、实时的通信,就叫做多工(Multiplexing)
在这里插入图片描述

前面面试

url从输入到确认搜索发生了什么

(1) 浏览器接收到URL, 到网络请求线程的开启。
(2) 一个完整的HTTP请求并的发出。(dns、tcp)
(3)服务器接收到请求并转到具体的处理后台。
(4)前后台之间的HTTP交互和涉及的缓存机制。
(5)浏览器接收到数据包后的关键渲染路径。
(6) JS引擎的解析过程.

1.用户输入URL,会使用浏览器默认搜索引擎加上搜索内容合成url;如果是域名会加上协议(如https)合成完整的url。

2.网络进程接收到url后,先查找有没有缓存。有缓存,直接返回缓存的资源。 没有缓存。(进入真正的网络请求)。

3.首先获取域名的IP,系统会首先自动从hosts文件中寻找域名对应的 IP 地址,一旦找到,和服务器建立TCP连接;如果没有找到,则系统会将网址提交 DNS 域名解析服务器进行 IP 地址的解析。

4.利用IP地址和服务器建立TCP连接(3次握手)

5.建立连接后,浏览器构建数据包(包含请求行,请求头,请求正文,并把该域名相关Cookie等数据附加到请求头),然后向服务器发送请求消息。

6.服务器接收到消息后根据请求信息构建响应数据(包括响应行,响应头,响应正文),然后发送回网络进程。

7.数据传输完成,TCP四次挥手断开连接。如果,浏览器或者服务器在HTTP头部加上如下信息,TCP就一直保持连接。保持TCP连接可以省下下次需要建立连接的时间,提示资源加载速度Connection:Keep-Alive 。

8.网络进程将获取到的数据包进行解析,根据响应头中的Content-type来判断响应数据的类型,如果是字节流类型,就将该请求交给下载管理器,该导航流程结束,不再进行;如果是text/html类型,就通知浏览器进程获取到文档准备渲染。

浏览器进程获取到通知之后。新建一个渲染进程。

渲染进程对文档进行页面解析和子资源加载。解析html生成DOM树,解析CSSOM树。合并生成render tree,
将每个节点的具体绘制方式转化到屏幕上的实际像素。

js介绍new一个对象的过程,示例代码如下:

function ClassA(){
	this.name = "123"
}
var p = new ClassA();

1、 创建空对象;
  var obj = {};
2、 设置新对象obj的constructor属性为构造函数的名称,设置新对象obj的__proto__属性指向构造函数的prototype对象;
  obj.proto = ClassA.prototype;
3、 使用新对象调用函数,函数中的this被指向新实例对象:
  ClassA.call(obj);  //通过 call(),obj能够使用属于另一个对象的方法。
4、 将初始化完毕的obj返回,赋给变量p

介绍一下this

默认绑定

默认绑定的字面意思就是,不满足其他的绑定方式,而执行的绑定规则。默认绑定会把this绑定到全局对象(是一个危险的操作,文章后面会说为什么) 看代码

function foo(){
     var num=2;
     this.num++
     console.log(this.num)
 }
 var num=0;
 foo()//1

在foo方法的代码块中操作的是window.num++

隐式绑定

函数被调用的位置有上下文,或者是该函数的引用地址是不是被某个对象的属性引用,并通过对象的属性直接运行该函数。如果出现上述的情况,就会触发this的隐式绑定,this就会被绑定成当前对象 看代码

function foo(){
    console.log(this.name)
}
var bar={
    name:'shiny',
    foo:foo
}
bar.foo()//shiny

显式绑定

call、apply绑定

介绍一下promise

class继承的原理

diff算法

事件循环

首先,JavaScript是一门单线程的语言,意味着同一时间内只能做一件事,但是这并不意味着单线程就是阻塞,而实现单线程非阻塞的方法就是事件循环。
JavaScript中的任务分为同步任务和异步任务:
同步任务:立即执行的任务,同步任务一般会直接进入到主线程中执行,
异步任务:异步执行的任务,比如ajax网络请求,setTimeout定时函数等。异步任务进入任务队列。

旧说法先执行微任务

I/O、定时器、事件绑定、ajax等都是宏任务
Promise的then、catch、finally和process的nextTick都是微任务

W3c新规范任务队列做了细分

分为微队列、延时队列、交互队列等,先执行微队列的任务,依次是交互、延时。

调用栈(Call Stack)

是一种后进先出的数据结构。当一个脚本执行的时候,js引擎会解析这段代码,并将其中的同步代码按照执行顺序加入调用栈中,然后从头开始执行。

事件队列 (Task Queue)

js引擎遇到一个异步事件后并不会一直等待其返回结果,而是会将这个事件挂起(其他模块进行处理),继续执行执行栈中的其他任务。当一个异步事件返回结果后,js会将这个事件加入到事件队列。

Google浏览器是多进程的在这里插入图片描述

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

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

相关文章

智能配电房环境监控系统

智能配电房环境监控系统是一种用于实时监测和控制配电房环境的系统。依托电易云-智慧电力物联网,通过集成应用物联网技术,实现对配电房内环境的全天候状态监视和智能控制。以下是智能配电房环境监控系统的主要功能: 环境数据实时监测&#xf…

Autoware.universe部署06:使用DBC文件进行UDP的CAN通信代码编写

目录标题 一、安装DBC文件编辑工具VectorCANdb二、编写DBC文件2.1 CAN通信协议2.2 编写DBC文件2.2.1 根据CAN协议设置signals2.2.2 设置报文2.2.3 建立节点 三、根据DBC文件编写ROS2驱动程序四、实际通信调试 根据CAN协议编写DBC文件,通过DBC文件编写ROS2包进行UDP通…

Centos7使用rpm安装mysql 5.7.43

Centos7使用rpm安装mysql 5.7.43 1、下载rpm包 wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.43-1.el7.x86_64.rpm-bundle.tar2、解压并安装 tar xf mysql-5.7.43-1.el7.x86_64.rpm-bundle.tar yum -y install mysql-*3、按需修改mysql配置 #注意&a…

【OpenCV实现图像:使用OpenCV进行物体轮廓排序】

文章目录 概要读取图像获取轮廓轮廓排序小结 概要 在图像处理中,经常需要进行与物体轮廓相关的操作,比如计算目标轮廓的周长、面积等。为了获取目标轮廓的信息,通常使用OpenCV的findContours函数。然而,一旦获得轮廓信息后&#…

WCS WMS WES关系

一、定义: 仓库控制系统 (WCS) 是一种软件应用程序。 WCS用于指导仓库和配送中心(DC) 内的实时活动。作为仓库/配送中心的“交通警察”,WCS 负责保持一切顺利运行,最大限度地提高物料搬运子系…

Android修行手册-溢出父布局的按钮实现点击

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分…

《算法通关村——幂运算问题解析》

《算法通关村——幂运算问题解析》 2 的幂 给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。 如果存在一个整数 x 使得 n 2x ,则认为 n 是 2 的幂次方。 示例 1&#xff1…

纽扣电池上架TEMU、亚马逊美国站需要做什么认证?纽扣电池认证标准16CFR1700.15,16CFR1700.20

近日,Temu连发多条卖家弹窗内容均为商品质量事故违规处理通告。其中一条为卖家销售的车载吸尘器发生烧毁、冒烟等情况,产生用户人伤、财损等舆情。经查实是商家偷换关键部件锂电池,导致商品质量下降造成事故。TEMU对于问题车载吸尘器处理结果…

MATLAB实现灰色预测

久违了,前段时间由于学习压力大,就没怎么更新MATLAB相关的内容,今天实在学不进去了,换个内容更新一下~ 本贴介绍灰色预测模型,这也是数学建模竞赛常见算法中的一员,和许多预测模型一样——底层原理是根据已…

win10 eclipse安装教程

前言:安装eclipse之前必须安装JDK,JDK是编译环境,eclipse是集成开发平台。 一、JDK的安装 Java Development Kit 简称 JDK (一). 官方下载地址: Java Archive Downloads - Java SE 8u211 and later (oracle.com) 找到&#xf…

【每日一题】2304. 网格中的最小路径代价-2023.11.22

题目: 2304. 网格中的最小路径代价 给你一个下标从 0 开始的整数矩阵 grid ,矩阵大小为 m x n ,由从 0 到 m * n - 1 的不同整数组成。你可以在此矩阵中,从一个单元格移动到 下一行 的任何其他单元格。如果你位于单元格 (x, y) …

分享-Spss下载含spss25.spss26.spss27等版本

为了学习spss买的,分享安装程序给大家 SPSS 27是一款用于统计分析和数据挖掘的软件,以下是SPSS 27的功能介绍和配置建议: 功能介绍: 数据管理:SPSS 27可以对数据进行管理和清洗,包括数据输入、缺失值处理…

MATLAB - text的两种使用方法

text小技巧 1. 常规使用(Method 1)2. 在显示画面的相对位置(Method 2)3. 举个例子 1. 常规使用(Method 1) text(x,y,txt)2. 在显示画面的相对位置(Method 2) text(string,‘ABC’,…

【蓝桥杯选拔赛真题25】C++两个数比大小 第十三届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析

目录 C/C++两个数比大小 一、题目要求 1、编程实现 2、输入输出 二、算法分析

谷歌开发者账号登录提示“存在异常活动”的原因及解决方法

相信很多开发者在登录谷歌开发者账号时遇到过这样的情况:“Verify your identity” “Weve detected unusual activity on the accountyoure trying to access. To continue, please followthe instructions below.” “验证您的身份,我们已经检测到你…

算法分析-三壶谜题

一.题目需求 有一个充满水的8品脱的水壶和两个空水壶(容积分别是5品脱和3品脱)。 通过将水壶完全倒满水和将水壶的水完全倒空这两种方式,在其中的一个水壶中得到4品脱的水。 二、算法思想 1.算法分析 1.1. 采用的算法思想是将某个时刻水壶…

Newman+Jenkins实现自动化测试

一、是什么Newman Newman就是纽曼手机这个经典牌子,哈哈,开玩笑啦。。。别当真,简单地说Newman就是命令行版的Postman,查看官网地址。 Newman可以使用Postman导出的collection文件直接在命令行运行,把Postman界面化运…

材料电磁参数综合测试解决方案-材料电磁参数测试系统 (100MHz-500GHz)

材料电磁参数测试系统 100MHz-500GHz 材料电磁参数测试系统测试频率范围覆盖100MHz~500GHz,可实现材料复介电常数、复磁导率等参数测试。系统由矢量网络分析仪、测试夹具、系统软件等组成,根据用户不同频率、材料类型的测试需求&#xff…

又一个涵盖前后端+DevOps+OpenAI大模型的高并发项目启动了

大家好,我是冰河~~ 今天,正式通知大家一件事情:又到了启动新项目的时候,这也是 冰河技术 知识星球继 Seckill秒杀系统 项目后,又一个高并发实战项目。星球其他项目与专栏,大家可移步到冰河的个人站点&…