浏览器渲染原理

author author     2022-09-01     305

关键词:

浏览器输入url到页面呈现发生了什么?


1:输入url 

浏览器会开启一个线程来处理这个请求,对URL分析判断如果是http协议就按照Web方式来处理,浏览器会从历史记录,书签等地方,找到已经输入的字符串可能对应的 url,然后给出智能提示,让你可以补全url地址。对于 google的chrome 的浏览器,他甚至会直接从缓存中把网页展示出来。

2:域名解析

通过DNS解析获取网址的IP地址,

IP 地址:IP 协议为互联网上的每一个网络和每一台主机分配的一个逻辑地址。IP 地址如同门牌号码,通过IP 地址才能确定一台主机位置。服务器本质也是一台主机,想要访问某个服务器,必须先知道它的IP 地址;

域名(DN):IP地址由四个数字组成,中间用点号连接,在使用过程中难记忆且易输入错误,所以用我们熟悉的字母和数字组合来代替纯数字的IP地址,比如我们只会记住www.baidu.com(百度域名) 而不是220.181.112.244(百度的其中一个IP地址);

DNS: 每个域名都对应一个或多个提供相同服务服务器的 IP 地址,只有知道服务器IP 地址才能建立连接,所以需要通过DNS 把域名解析成一个IP 地址。

域名与 URL 是两个概念:

域名是一台或一组服务器的名称,用来确定服务器在 Internet上的位置;

URL 是统一资源定位符,用来确定某一个文件的具体位置,

IP 地址与域名不是一一对应的关系:可以把多个提供相同服务的服务器 IP 设置为同一个域名,但在同一时刻一个域名只能解析出一个IP地址;同时,一个IP 地址可以绑定多个域名,数量不限;

DNS查询的两种方式:递归查询和迭代查询。

3:浏览器通过与远程web服务器TCP三次握手协商来建立一个TCP/IP链接。

拿到域名对应的IP地址之后,浏览器会以一个随机端口向服务器的WEB程序(常用的有httpd,nginx等)80端口发起TCP的连接请求。最终建立了TCP/IP的连接。浏览器通过与远程web服务器TCP三次握手协商来建立一个TCP/IP链接。

TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接,

(1)第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。

(2)第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。

(3)第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。

完成三次握手,客户端与服务器开始传送数据。

三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”

4:浏览器向 web 服务器发送一个 HTTP 请求

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据

5:服务器处理请求并返回HTTP报文。

服务器响应消息

HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

技术分享

 

6:浏览器收到请求开始解析渲染页面。

浏览器在解析html文件时,会”自上而下“加载,并在加载过程中进行解析渲染。在解析过程中,如果遇到请求外部资源时,如图片、外链的CSS、iconfont等,请求过程是异步的,并不会影响html文档进行加载。

?DOM

俗称节点树,它是浏览器根据HTML结构经过各种处理(特别是容错处理)生成的树,它代表了整个网页的结构。

?CSSOM

样式规则树,它是浏览器分析网页对应的CSS文件生成的树,它跟网页的HTML结构没有任何关系,仅仅是CSS文件的树型结构。要特别注意的是浏览器发现需要下载一个CSS文件时,它会马上停止渲染页面,并且在新的样式规则树未被建立前都不会再进行渲染或者更新页面,也就是CSS会阻塞页面的渲染。因此,必须尽可能精简CSS文件内容以及将CSS文件的link标签放到页面头部。

?Render tree

渲染树,浏览器在DOM树和CSSOM树生成之后融合成为真正用于渲染的树,它的结构跟DOM树一致,但是同时又根据CSSOM树添加了相关的样式信息,浏览器会根据渲染树在页面区域画图,最终形成网页界面。

解析过程中,浏览器首先会解析HTML文件构建DOM树,然后解析CSS文件构建渲染树,等到渲染树构建完成后,浏览器开始布局渲染树并将其绘制到屏幕上。这个过程比较复杂,涉及到两个概念: reflow(回流)和repain(重绘)。

当文档加载过程中遇到js文件,html文档会挂起渲染(加载解析渲染同步)的线程,不仅要等待文档中js文件加载完毕,还要等待解析执行完毕,才可以恢复html文档的渲染线程。因为JS有可能会修改DOM,最为经典的document.write,这意味着,在JS执行完成前,后续所有资源的下载可能是没有必要的,

7:连接结束。

HTTP三点注意事项:

  • HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  • HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
  • HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

浏览器的渲染原理

 首先来说一下浏览器的内核,浏览器的内核包括;渲染引擎和js引擎,由于js引擎越来越独立,因此内核主要是指渲染引擎。内核主要分为Trident(IE,360浏览器的内核就为Trident),Gecko内核(火狐浏览器使用的就是Gecko内核)... 查看详情

前端技能树,面试复习第40天——浏览器原理:浏览器渲染原理,如何优化渲染过程

...、区块链、Web3、答疑解惑、面试辅导以及职业发展。。1.浏览器的渲染过程浏览器渲染主要有以下步骤:首先解析收到的文档,根据文档定义构建一棵DOM树,DOM树是由DOM元素及属性节点组成的。然后对CSS进行解析,生成CSSOM规则... 查看详情

浏览器渲染原理

浏览器渲染展示网页的过程,老生常谈,面试必问,大致分为:解析HTML(HTMLParser)构建DOM树(DOMTree)渲染树构建(RenderTree)绘制渲染树(Painting)简单解释一下,通过请求得到的HTML经过解析(HTMLparser)生成DOMTree。而在CSS解析完毕后,需... 查看详情

浏览器渲染原理

一:浏览器的主要功能1.用户界面-----地址栏,后退,前进按钮,书签目录等,也就是除了主窗口以外的部分。2.浏览器引擎---用来查询及操作渲染引擎的接口,另外还用来操作浏览器的数据存储。3.渲染引擎-----用来显示请求的... 查看详情

浏览器渲染引擎工作原理

 浏览器内核包括渲染引擎和JS引擎,由于js引擎越来越独立,内核就倾向于只指渲染引擎 渲染引擎是一种对HTML文档进行解析并将其显示在页面上的工具。它负责取得网页的内容(HTML、XML、图象等等)、整理信息(例如加... 查看详情

初探浏览器渲染原理

...,或多或少还是能充实自己的知识储备。这里主要说的是浏览器渲染这块,其他的http请求传输这块又是另外一个提升性能方向了。从浏览器得到页面开始:  不同的浏览器内核,对渲染执行可能不同   1.解析html,生成do... 查看详情

不同内核的浏览器,以及渲染原理

一、“RenderingEngine”渲染引擎,也可以叫做浏览器内核(这个部分要扩展一下,原本的浏览器内核分为渲染引擎和Js引擎,后来Js引擎越来越独立,内核就倾向于只指渲染引擎了),是浏览器最核心的部分,浏览器内核的不同对... 查看详情

图解浏览器渲染原理及流程(代码片段)

...约 8500 字,预计阅读需要30 分钟。今天来分享一下浏览器的渲染原理及流程。前言先来看看Chrome浏览器的多进程架构:通常,我们打包出来的HTML、CSS、JavaScript等文件,经过浏览器运行之后就会显示出页面,... 查看详情

html渲染原理

渲染从上面这个图上,我们可以看到,浏览器渲染过程如下:解析HTML,生成DOM树,解析CSS,生成CSSOM树将DOM树和CSSOM树结合,生成渲染树(RenderTree)Layout(回流):根据生成的渲染树,进行回流(Layout),得到节点的几何信息(位置,大... 查看详情

问我chrome浏览器的渲染原理(6000字长文)

...css和JavaScript是如何变成页面的,这个问题你了解过吗?浏览器究竟在背后都做了些什么事情呢?让我们去了解浏览器的渲染原理,是通往更深层次的开发必不可少的事情,能让我们更深层次,多角度的去考虑性能优化等问题。HT... 查看详情

浏览器渲染原理的个人整理

...术大行其道,越来越多新入行的同学对于dom的概念,乃至浏览器渲染的知识的了解和熟悉程度都越来越低了,当然,毕竟浏览器渲染牵涉到内容广大而深远,不同浏览器的策略又不完全相同,但是近来团队里的童鞋频繁遇到了动... 查看详情

浏览器渲染原理

浏览器输入url到页面呈现发生了什么?1:输入url 浏览器会开启一个线程来处理这个请求,对URL分析判断如果是http协议就按照Web方式来处理,浏览器会从历史记录,书签等地方,找到已经输入的字符串可能对应的url,然后给... 查看详情

浏览器工作原理:浏览器渲染过程概述(代码片段)

参考:https://segmentfault.com/a/1190000012925872#articleHeader4浏览器器内核拿到内容后,渲染大概可以划分成以下几个步骤:解析html建立dom树解析css构建render树(将CSS代码解析成树形的数据结构,然后结合DOM合并成render树)布局render树(L... 查看详情

从浏览器渲染原理谈动画性能优化(代码片段)

图片来源:https://colachan.com/post/3444本文作者:树,RenderLayer树,GraphicsLayer树,它们共同构成了"渲染森林"。保存了绘制DOM节点所需要的各种信息,与DOM树对应,RenderObject也构成了一颗树。但是RenderObject的树与DOM节点并不是一一对... 查看详情

深入现代浏览器(第三部分)chrome渲染器进程的内部工作原理(代码片段)

渲染器进程的内部工作原理这是关于浏览器如何工作的4部分博客系列的第3部分。之前,我们介绍了多进程架构和导航流。在这篇文章中,我们将看看渲染器进程内部发生了什么。渲染器过程涉及Web性能的许多方面。由于... 查看详情

根据浏览器渲染引擎工作原理(reflow/repaint),来优化dom的操作

1.浏览器的渲染引擎工作原理: (1)解析HTML,生成DOM树。解析HTML文档,转换树中的html标签或js生成的标签到DOM节点,它被称为--内容树。 (2)构建渲染树,解析Style,生成StyleRules,解析CSS(包括外部CSS文件和样式元素... 查看详情

浏览器的渲染原理简介

HowBrowsersWork 这篇文章把浏览器的很多细节讲的很细,也有中文的翻译版本,现在转载的这篇是陈皓写的,目的的为了能在上班途中,或是坐马桶时就能读完,并能从中学会一些能用在工作上的东西。 浏览器工作大流程先... 查看详情

浏览器渲染原理(代码片段)

...念,没有代码。一般会问:1、什么是DOCTYPE以及作用。2、浏览器渲染过程。有的公司会问:浏览器中输入url,发生哪些事情,让你一步一步描写清楚?其中有一步就是浏览器渲染过程。输入url,会有一个dms解析,然后发到服务器... 查看详情