页面渲染

274 阅读3分钟

1. 在浏览器输入URL回车之后发生了什么

我们在浏览器输入的URL实际上不能找到服务器地址

1.1 解析ip地址

每个网址都有相应的ip地址,ip地址是由数字组成的,不方便人们记忆。所以这里需要DNS解析,DNS解析就是把网址解析为ip地址。其实DNS就是一个数据库,里面记录了URL和对应的ip地址,这样我们就能根据URL找到对应的ip地址,有了ip地址就可以在互联网找到对应的服务器。

1.2 建立数据通道

在正式发送数据之前需要建立TCP连接,建立TCP连接就是在发送数据之前建立通道。客户端和服务端之间建立通道就可以在这个通道里发送数据了。大家都在这个通道之间发送数据,这样就不容易发生错乱了。于是就有了建立通道前的三次握手。客户端发送SYN数据包来表示请求连接,服务器响应SYN和ACK的数据包来表示同意建立连接,客户端再发送ACK数据包表示成功连接。

1.3 发送请求报文

当我们和服务器建立连接之后,浏览器建立HTTP请求报文给服务器。

  • 请求行:请求方式,请求地址,HTTP协议版本组成
  • 请求头:关于浏览器的信息,有键值对组成,一行一对
  • 空行
  • 请求数据 image.png

当服务器收到HTTP请求报文之后,处理请求报文并作出响应。

  • 状态行:Status Code 200
  • 响应头部:content-type:text/html;chartset=utf-8。键值对组成,一行一对
  • 空行
  • 响应数据 image.png

1.4 开始渲染页面

浏览器在接受服务器的响应之后,就开始渲染页面了,也就是解析接收到的html、css、js等文件 image.png

2. 浏览器渲染页面的流程

请求服务器得到html文件。一开始浏览器得到的是显示字节内容的html文件;字节转换为字符,也就是html代码;浏览器把字符转换为token,可以把token理解为符号标签;把token转变为节点对象;最后把节点对象连接在一起,形成文本对象模型,也就是DOM。 image.png CSSOM同理 image.png 渲染树上的节点是页面能够呈现的内容。一些html标签和一些样式是不会被呈现出来的,没有呈现出来的就不会挂载DOM树上了。比如meta、link标签,display: none的样式。渲染树的任务就是匹配DOM和CSSOM的节点,并且捕获可见内容。 image.png 渲染树构建完成之后,页面也不能马上被渲染,还需要布局:获取渲染树的结构,节点位置和大小。 布局完成之后就开始安排页面的绘制了。把渲染树以像素的形式绘制在页面,此时页面就呈现出来了。
DOM和CSSOM不同点:DOM可以部分解析,CSSOM不能部分解析。例:只解析body会出现问题。 image.png 在解析CSS文件并构建CSSOM的时候,浏览器依旧可以下载并解析JS文件。等CSSOM构建完成以后就可以执行JS里的内容了。JS会阻塞HTML解析的。因为JS既可以操作DOM,又可以操作CSSOM。如果不等JS下载解析执行完以后在构建DOM,这样会导致网页的内容出现了又消失。 image.png 总结: image.png