前端优化原理篇(生命周期)

news2025/1/15 20:59:34

1, 性能评估模型

对于前端的性能的评判 主要是以下四个方面:
在这里插入图片描述

2,性能测量工具

1,浏览器的performarce功能
指路可看链接
2,lighthouse工具

3,生命周期

网站 页面的整个生命周期,通俗的讲,就是从我们在浏览器的地址栏中输入一个url后,到整个页面渲染出来的过程,这个过程包括 域名解析,建立tcp连接,前后端通过http通话,压缩与解压缩,以及前端的关键渲染路径。
关于前端的知识,我们将页面的生命周期划分为一下几个阶段:

  • 浏览器接收到url,到网络请求线程的开启
  • 一个完整的http请求并转到后端
  • 前后端之间的http请求交互和涉及的缓存机制
  • 浏览器接收到的数据包后的关键渲染路径
  • js引擎的解析过程

在这里插入图片描述

3.1 网络请求线程开启

输入url到开启网络请求线程,这个阶段是在浏览器内部完成的。

首先是对url进行解析:
url结构: protocol://Host:Post/path?Query#Fargment

  • protocal: 协议头。说明浏览器要如何处理打开的文件
  • Host: 主机域名或者是ip地址,就是所访问的资源在互联网上的地址
  • port:端口号,请求程序和响应程序之间连接的标识
  • path: 目录路径, 请求的目录或者是文件名
  • query: 查询的参数,请求所传递的参数
  • fragment: 片段,通常作为前端路由或者是锚点
  • 解析完url之后,浏览器就会新建一个网络请求线程去下载所需要的资源。

3.2 建立http请求

这部分的内容主要分为两部分,一个是DNS解析,一个是通信链路的建立。

通俗的讲就是首先发出请求的客户端浏览器应该要知道要访问的服务器的地址,然后建立通往该服务地址的路径

1, DNS解析

主要是将域名解析成ip地址

主要的流程如下:

会以递归的方式去浏览器缓存,系统自身缓存,hosts文件中去查找有没有对应的IP地址。

如果都没有,就会去本地域名服务器上去查找,如果本地域名服务器没有对应的IP地址,那本地域名服务器会以迭代的方式去根域名服务器,com顶级域名服务器,权限域名服务器中去查找。

如果没找到,就会返回失败的代码。

2,建立连接

当解析得到ip地址之后,就可以建立连接进行资源的请求与响应,主要走的是TCP/IP的一个网络模型。
当使用本地主机有网络时,数据链路和网络层就已经打通了。
接下来将向目标主机,发送hettp请求,需要传输层建立端到端的一个连接。传输层一般是TCP/UDP的协议,这里使用TCP举例子。
TCP协议要走三次握手这个流程,走完之后才算连接成功。

3.3 前后端的交互

当tcp连接好之后,可以通过http协议进行前后端的通信,但在实际的访问中,并不是浏览器和ip地址直接的通信,而是会在中间加上反向代理服务器。

常见的反向代理,我们一般是使用nginx。

当本地主机发送到反向代理请求之后,反向代理会处理一下流程:

首先会有一层的验证环节,若是验证失败,就会返回失败的代码。

通过验证之后,就会进行后端代码程序,进行数据库查询等。

完成计算之后,后端就会以一个http响应数据包的形式发送会请求的前端,结束本次请求。

3.4 关键渲染路径

当浏览器获得html,css,js文件如何将其渲染到页面上面。

浏览器通过解析html,构建DOM,解析css, 构建CSSOM

构建完两个对象模型之后,将这两个对象模型合并为渲染树,渲染树只包含渲染可见的节点。

当首屏渲染完之后,用户在和网站交互过程中,有可能通过js代码提供用户操作接口更改渲染树的结构,一旦DOM结构发生了变化,这个渲染活成就会重新渲染一遍。

因此对于关键渲染路径的优化影响不仅仅是首屏性能还有交互性能。

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

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

相关文章

移动端App 页面秒开优化总结

前言 App优化,是一个工作、面试或KPI都绕不开的话题,如何让用户使用流畅呢?今天谨以此篇文章总结一下过去两个月我在工作中的优化事项到底有那些,优化方面还算小白,有不对的地方还望指出海涵, 该文章主要通过讲述Nati…

CSS入门三、盒子模型

零、文章目录 文章地址 个人博客-CSDN地址:https://blog.csdn.net/liyou123456789个人博客-GiteePages:https://bluecusliyou.gitee.io/techlearn 代码仓库地址 Gitee:https://gitee.com/bluecusliyou/TechLearnGithub:https:…

力扣sql基础篇(四)

力扣sql基础篇(四) 1 每位学生的最高成绩 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # rank()函数间隔排序 若前两个字段值相同且都是并列的第一名,那么后面的一个非连续数字就是第三名 如 1 1 3 SELECT e.student_id,e.course_id,e.grade FROM…

ISO12233分辨率测试卡分类及功能说明

概述相机图像分辨率的测试,依据的标准是ISO 12233. 目前分为 ISO12233:2000 ,ISO12233:4000, ISO12233:2014.目前很多厂家已经开始使用新的ISO标准,淘汰了十几年前的“落伍”标准,而更新成了ISO12233:2014。新的分辨率测试标板是由…

代码随想录算法训练营第四期第五十六天 | 583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结篇

583. 两个字符串的删除操作 # 给定两个单词word1和word2,返回使得word1和word2相同所需的最小步数。 # 每步可以删除任意一个字符串中的一个字符。 # # 示例 1: # 输入: word1 "sea", word2 "eat" # 输出: 2 # 解释: 第一步将 &…

安顺控股冲刺A股上市:拟募资6.5亿元,九成收入来自天然气销售

近日,安顺控股股份有限公司(下称“安顺控股”)递交招股书,准备在上海证券交易所主板上市。本次冲刺上市,安顺控股计划募资6.50亿元,将用于溧阳市城镇燃气高压管网二期项目、溧阳市美丽乡村天然气利用项目一…

openstack私有网络

1.前情回顾 目前环境使用的是Provider网络现在需要将其修改为Self-service网络,类似于公有云的vpc网络 2.流程 1.控制节点配置修改 1.修改/etc/neutron/neutron.conf的[DEFAULT]区域 # 原来的配置 # core_plugin ml2 # service_plugins # # 修改后的配置 c…

GitHub Enterprise Server 存在授权不当漏洞(CVE-2022-46258)

漏洞描述 GitHub Enterprise Server 是一个面向开源及私有软件项目的托管平台,GitHub scope 用于限制 OAuth token 的访问范围。 在 GitHub Enterprise Server 中,除非提交位于同一存储库的不同分支中且和 Workflow files 内容相同的 Workflow 文件 &a…

【学习】Reptile、梯度下降的LSTM、Siamese Network、原型网络、匹配网络、关系网络

文章目录ReptileRNNLSTM梯度下降的LSTM基于度量的方法Siamese NetworkN-way Few/One-shot Learning原型网络匹配网络关系网络虚拟数据的少量学习Train Test as RNNReptile RNN LSTM RNN的变形 加入门 梯度下降的LSTM GD看似像简化的LSTM 可以让机器自动学习这些zf和zi …

sql的where使用运算后的列后报错

sql的where语句中如果使用了经过运算处理后的某个列的话会报错,例如:上面红框部分就是经过运算后的列,但这个语法是错误的,但如果想通过运算后的某个列来筛选条件,应该怎么办?可以使用嵌套查询:…

SpringBoot实践(三十八):自定义spring-boot-starter

目录 自动配置原理 自定义starter包 导入springboot的自动配置依赖 测试业务代码 spring.factories配置 ​编辑 本地包上传 使用自定义starter依赖 测试和配置 自动配置原理 基于springBoot的starter机制能够让我们在使用外部包时候非常方便,只需要引入该组…

PCB学习笔记—3D PCB封装的创建

放置3D元件体:常规的、自定义、圆柱形、球体。第一个是厚度,第二个是焊盘和芯片的悬浮高度。一般电阻的高度设置成0.6mm就够了,电容1.25mm,悬浮高度为0。按键:放置3D元件体,Tab键,选择常规&…

快过年静不下心?不如刷刷《剑指offer》静一静(第七天)

跟着博主一起刷题 这里使用的是题库: https://leetcode.cn/problem-list/xb9nqhhg/?page1 目录剑指 Offer 49. 丑数剑指 Offer 51. 数组中的逆序对剑指 Offer 55 - I. 二叉树的深度剑指 Offer 49. 丑数 剑指 Offer 49. 丑数 我一开始的思路是,把数字1~无…

机器学习HW15元学习

文章目录一、简介Task: Few-shot Classification实验1、simple2、medium3、strong4、boss三、代码模型构建准备工作一、简介 任务对象是Omniglot数据集上的few-shot classification任务,内容是利用元学习找到好的初始化参数。 Task: Few-shot Classification The…

在VSCode中使用Compaq Visual Fortran编译运行Frotran程序

本片文章主要是为了使用VSCode编译运行带QuickWin的老版本Fortran代码。 一、准备工作 安装VSCode和Compaq Visual Fortran6.6。 二、配置Fortran工程 用VSCode打开保存有Frotran代码的文件夹 建立.vscode文件夹,建立launch.json和task.json文件,分…

二、TCP/IP---Ethernet和IP协议

TCP/ip协议栈 OSI模型TCP/IP协议栈应用层,表示层,会话层应用层传输层主机到主机层(传输层)网络层网络层数据链路层,物理层网络接入层 Ethernet协议 以太网,实现链路层的数据传输和地址封装(MA…

马蹄集 三角形坐标

三角形坐标 难度&#xff1a;青铜 ○时间限制&#xff1a;1秒 巴占用内存&#xff1a;64M 输入三角形三个顶点A,B,C的坐标(x,y),根据公式计算并输出三 角形面积。 S1/2*X1y2X2y33y1-X1y3-X2y1-x3y2 #include <bits/stdc.h> using namespace std; int main(){double x[4],…

Win10应用商店无法加载错误0x80072F7D怎么办?

Win10应用商店无法加载错误0x80072F7D怎么办&#xff1f;有用户开启电脑的Win10软件商店想要获取软件的时候&#xff0c;发现软件页面无法进行正常的加载&#xff0c;里面的内容显示为错误代码0x80072F7D。那么这个情况怎么去进行解决呢&#xff1f;一起来看看详细的解决方法分…

PMP证书到期了,有必要续吗?

我觉得续证是有需要的&#xff0c;毕竟证书有用的地方很多。 下面我们将从两方面分享&#xff1a; 1. PMP 证书在国内的含金量怎么样&#xff1f; 2. HR 如何看待 PMP 证书&#xff1f; 说到 PMP 证书的含金量&#xff0c;相信这个问题是所有人都关心的。对于如何来评判 PMP…

达芬奇密码题解

题目信息达芬奇隐藏在蒙娜丽莎中的数字列:1 233 3 2584 1346269 144 5 196418 21 1597 610 377 10946 89 514229 987 8 55 6765 2178309 121393 317811 46368 4181 1 832040 2 28657 75025 34 13 17711 记录在达芬奇窗台口的神秘数字串:36968853882116725547342176952286这道题…