前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >前端性能优化(一)——浏览器工作原理

前端性能优化(一)——浏览器工作原理

作者头像
呆呆
修改于 2021-10-01 05:56:27
修改于 2021-10-01 05:56:27
6810
举报
文章被收录于专栏:centosDaicentosDai

作为一个前端,经常会有老板或测试给我们提出某个地方加载太慢了,需要优化一下。我们自己的网站也一样,加载时间过长,自己都不耐烦,对于网页优化是很常见的,今天我们先介绍下网页加载原理。

一、浏览器简介

想要了解浏览器的工作原理,我们必须清楚浏览器的组成有哪些?以及各个部分功能。

浏览器组成部分如图所示:

各部分的功能及意义:

  • 用户界面:浏览器的界面,有标签页、地址栏、前进、后退、刷新、收藏等。除了请求到的内容页面。
  • 浏览器引擎:用来查询和操作渲染引擎的接口。
  • 渲染引擎:也叫做 “浏览器内核” ,用来解析 html、css 并将结果以网页的形式显示,不同浏览器内核不同,同理渲染引擎也不同。
  • 网络:用来网络调用,如前后端数据交互中的http请求。
  • js 解释器:用来解释执行js代码。
  • UI 后端:绘制基础原件,如组合框与窗口,提供平台无关的接口,内部使用操作系统的相应实现。
  • 数据存储:属于持久层。浏览器需要把所有数据存到硬盘上,如 cookie、图片、css 等。

二、浏览器工作流程

我们在浏览器用户界面的地址栏中,输入我们需要访问网站地址url后回车。

浏览器工作流程:

  1. 构建请求:浏览器开启网络请求线程,向服务器发送完整的http请求。
  2. 查找缓存:真正发起网络请求之前,浏览器会先在数据存储中查询是否有需要请求的文件。如果没有任何缓存,说明第一次请求,则进入网络请求过程。当浏览器有缓存的时候,会拦截请求,返回缓存,拦截请求。缓存优点:缓解服务器压力,提升性能,实现快速加载资源。
  3. 准备IP地址和端口:通过 URL 地址获取 ip 地址和端口信息,通过 DNS 解析返回域名对应的 ip 和 port ,浏览器也提供了 dns 数据缓存,通常 url 没有指明端口号,则默认80。
  4. 等待TCP队列:chrome 有个机制,同一域名下同时最多只能建立6个TCP连接,如果同时有10个请求发生,其中4个就会进入等待队列,直至进行中的请求完成,如果小于6个,则直接进入TCP 连接。
  5. 建立TCP连接:浏览器与服务器之间通过 TCP 建立连接。TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
  6. 发送http请求:连接建立成功之后,浏览器就可以与服务器之间通讯了。浏览器会向服务器发送请求信息,包括请求方法、请求 URL、http 版本协议。
  7. 服务器处理请求:服务端收到请求信息以后,会根据浏览器的请求信息返回结果,返回结果中包含三部分:响应行、响应头、响应体。响应行内包含状态码,告诉浏览器处理结果,http状态码有很多。响应头包含服务器自身的一些信息,响应体就包含了网页的 html 实际内容。
  8. 服务器响应和断开连接:通常服务器向浏览器返回请求数据之后,就会关闭连接,经过四次分手之后,就断开连接了。

浏览器中http请求阶段如图:

http请求和响应处理,是前端与后端数据交互的时候经常使用的部分。

三、浏览器渲染过程

渲染引擎通过网络获得请求文档内容(以8k分块的方式完成),然后开始:解析html为DOM树 > 渲染树结构 > 布局渲染 > 绘制渲染树。

具体解析过程为:

开始解析 html 内容,将标签转化为 DOM 节点,然后解析它外部的css文件以及 style 中的样式信息。css 样式信息和 html 标签来构建渲染树。渲染树是由一些包含颜色大小等盒子组成的,按照从上到下,从左到右的方式显示,渲染树构建好之后,执行布局过程,将每个节点确定在屏幕上的确切坐标,最后使用 UI 后端层绘制每个节点。

举例说明下浏览去解析 html、css、js 的过程:

  1. 浏览去地址栏输入地址后回车,假设第一次访问,浏览去向服务器发送请求,返回html文件。
  2. 浏览去载入html代码,解析head中的link引入的外部css文件。
  3. 浏览器发出css文件请求,服务器会返回css文件。
  4. 浏览器继续载入body部分代码,css文件接收到之后,就可以渲染页面。
  5. 遇到img标签引入图片,会立马向服务器发送请求,此时不等待返回的图片,而是继续向下渲染。
  6. 浏览器接收到返回图片文件,由于图片占用一定面积,影响后边排版,所以浏览去需要回过头重新渲染这部分代码。
  7. 浏览器发现script标签,内部包含的js代码,就会立即执行。
  8. js脚本执行js语句,如果js语句操作的是DOM元素,浏览器就需要重新渲染这部分代码。
  9. 等到</html>到来,页面第一次渲染就完成了。
  10. 如果用户点击"换肤"按钮,js让浏览器换一个css文件,此时浏览去又会向服务器发送请求。
  11. 等浏览器返回新的css文件之后,重新渲染页面。

需要注意:

  • js不能并行下载和解析(阻塞下载)。
  • 当引用了JS的时候,浏览器发送1个js request就会一直等待该request的返回。因为浏览器需要1个稳定的DOM树结构,而JS中很有可能有代码直接改变了DOM树结构,比如使用 document.write 或 appendChild,甚至是直接使用的location.href进行跳转,浏览器为了防止出现JS修改DOM树,需要重新构建DOM树的情况,所以 就会阻塞其他的下载和呈现。
  • JS、CSS中如有重定义,后定义函数将覆盖前定义函数。

先了解网页的请求,加载,解析过程,然后再考虑到底该如何优化网页性能呢?

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
攻城狮应该明白的浏览器工作原理~
作为前端开发,我们平常跟浏览器打交道的时间也是最多的。在前端面试中,一个较为经典的问题:在浏览器地址中输入url地址,敲回车,发生了什么?浏览器究竟做了什么?相信很多人脑海里都会出现个大概的轮廓,可是一到细化具体的过程就答不上来。那么,作为前端开发者,应该从哪些方面延伸来回答这个问题呢?
苏南
2020/12/16
4560
攻城狮应该明白的浏览器工作原理~
前端面试之浏览器
浏览器要将URL解析为IP地址,解析域名就要用到DNS协议,首先主机会查询DNS的缓存,如果没有就给本地DNS发送查询请求。DNS查询分为两种方式,一种是递归查询,一种是迭代查询。如果是迭代查询,本地的DNS服务器,向根域名服务器发送查询请求,根域名服务器告知该域名的一级域名服务器,然后本地服务器给该一级域名服务器发送查询请求,然后依次类推直到查询到该域名的IP地址。DNS服务器是基于UDP的,因此会用到UDP协议。
CODER-V
2023/03/04
6320
前端面试之浏览器
浏览器工作原理 - 浏览器整体概览
可以通过 Chrome 浏览器中的 选项->更多工具->任务管理器,打开 Chrome 的任务管理器窗口,来查看 Chrome 打开一个页面,需要启动多少进程:
Cellinlab
2023/05/17
7790
浏览器工作原理 - 浏览器整体概览
【综合篇】浏览器的工作原理:浏览器幕后揭秘
浏览器的发展历程的三大路线,第一是应用程序web化,第二是web应用移动化,第三是web操作系统化。是不是有点不直白。
达达前端
2020/02/18
8590
【综合篇】浏览器的工作原理:浏览器幕后揭秘
【优化】356- 你必须懂的前端性能优化
对于 DNS 解析和 TCP 连接两个步骤,我们前端可以做的努力非常有限。相比之下,HTTP 连接这一层面的优化才是我们网络优化的核心。
pingan8787
2019/09/24
6350
【优化】356- 你必须懂的前端性能优化
前端性能优化不完全手册
将请求优先分配给压力较小的服务器,它可以平衡每个队列的长度,并避免向压力大的服务器添加更多的请求。
Peter谭金杰
2019/08/02
8110
阶段一:宏观视角下的浏览器
01 | Chrome架构:仅仅打开了1个页面,为什么有4个进程? ---- 一、操作 在Chrome浏览器中,我们点击右上角三个点–更多工具–任务管理器。 会看到打开一个页面,启动了多个进程。 在进行每个进程分析前,先明确下线程与进程之间的关系。 二、线程 VS 进程 进程:一个进程就是一个运行实例–启动一个程序的时候,操作系统会为该程序创建一块内存,用来存放代码、运行中的数据和一个执行任务的主线程,这样的一个运行环境就叫做进程。 线程:线程不能单独存在,需要由进程来启动和管理。 线程与进
六个周
2022/10/28
3840
前端性能优化——桌面浏览器前端优化策略
作者:ouven https://my.oschina.net/zhangstephen/blog/1601382 摘要: 前端性能优化是一个很宽泛的概念,本书前面的部分也多多少少提到一些前端优化方法,这也是我们一直在关注的一件重要事情。配合各种方式、手段、辅助系统,前端优化的最终目的都是提升用户体验,改善页面性能,我们常常竭尽全力进行前端页面优化,但却忽略了这样做的效果和意义。先不急于探究前端优化具体可以怎样去做,先看看什么是前端性能,应该怎样去了解和评价前端页面的性能。 通过性能测速和分析,我们基本可以
企鹅号小编
2018/02/07
1.7K0
前端性能优化
本来想写一篇实用而又全面的性能优化文章,很多大佬已经写了非常好,我就不再造轮子了。我这篇文章就归纳整理一下吧,方便后续我或他人学习使用。
Dawnzhang
2022/05/10
1.3K0
前端性能优化
浏览器工作原理分析与首屏加载
本文介绍了浏览器工作原理,从解析HTML、CSS、JavaScript、DOM、性能优化、首屏优化、FOUC、白屏等方面进行阐述。
练小习
2017/12/29
1.8K0
浏览器工作原理分析与首屏加载
面试题之从敲入 URL 到浏览器渲染完成
小汪最近在看【WebKit 技术内幕】一书,说实话,这本书写的太官方了,不通俗易懂。
夜尽天明
2019/11/13
7740
面试题之从敲入 URL 到浏览器渲染完成
五分钟了解浏览器工作原理
Web 浏览器无疑是用户访问互联网最常见的入口。浏览器凭借其免安装和跨平台等优势,逐渐取代了很多传统的富客户端。
音视频开发进阶
2020/05/26
9720
五分钟了解浏览器工作原理
浏览器工作原理 - 页面
网络面板主要有控制器、过滤器、抓图信息、时间线、详细列表和下载信息概要 6 个区域:
Cellinlab
2023/05/17
9390
浏览器工作原理 - 页面
前端性能优化原理与实践
在资源请求的过程中,涉及到网络请求的,包括:HTTP、TCP、DNS。其中TCP、DNS前端能做的工作非常有限,因此「优化HTTP」就成为了首要任务。
chuckQu
2022/08/19
1K0
人人都在用,但你却不知道它背后发生了什么——浏览器的工作原理:浏览器幕后揭秘
要介绍进程与线程的话,需要先讲解下并行处理,了解了并行处理的概念,再理解进程和线程之间的关系就会变得轻松许多。
用户7656790
2020/08/13
9360
人人都在用,但你却不知道它背后发生了什么——浏览器的工作原理:浏览器幕后揭秘
聊一聊前端性能优化 CRP
优化关键渲染路径可以提升首屏渲染时间。理解和优化关键渲染路径对于确保回流和重绘可以每秒 60 帧、确保高性能的用户交互和避免无意义渲染至关重要。
前端森林
2020/07/09
9390
你必须懂的前端性能优化
对于 DNS 解析和 TCP 连接两个步骤,我们前端可以做的努力非常有限。相比之下,HTTP 连接这一层面的优化才是我们网络优化的核心。
张炳
2019/08/02
7130
你必须懂的前端性能优化
【综合篇】Web前端性能优化原理问题
想要成为一名合格的Web前端工程师,Web前端性能优化是一个必须要掌握的知识,那么应该怎么进行Web前端性能优化呢?--达达前端
达达前端
2020/02/18
1.8K0
【综合篇】Web前端性能优化原理问题
讲讲前端性能优化
“好事”文章:前端小白使用Docsify+Markdown+‌Vercel,无服务器部署个人知识库
用户7194327
2024/12/04
1070
谈谈前端性能优化-面试版
当我们去面试的时候,很大概率会被面试官问这么一个问题:你有尝试过对项目做性能优化吗?或者你了解哪些性能优化的方法?听到这个问题的你可能是这样的:
loveX001
2022/10/11
1.3K0
相关推荐
攻城狮应该明白的浏览器工作原理~
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档