一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?

1.DNS解析

比如我们访问www.baidu.com,实际上机器更擅长记住百度的ip地址。那么在这里就需要将域名解析为IP地址。

DNS:因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。

2.建立TCP连接

主机和服务器之间,经过三次握手,建立连接

3.发送http请求

http请求格式为:
| 请求方法URI协议/版本

| 请求头(Request Header)

| 请求正文

4.服务器处理请求,并做出http响应

响应报文和请求报文的格式类似

5.浏览器解析渲染页面

浏览器首先会解析HTML文件构建DOM树,然后解析CSS文件构建渲染树,等到渲染树构建完成后,浏览器开始布局渲染树并将其绘制到屏幕上。

DOM节点中的各个元素都是以盒模型的形式存在,这些都需要浏览器去计算其位置和大小等,这个过程称为relow;当盒模型的位置,大小以及其他属性,如颜色,字体,等确定下来之后,浏览器便开始绘制内容,这个过程称为repain。

页面在首次加载时必然会经历reflow和repain。reflow和repain过程是非常消耗性能的,尤其是在移动设备上,它会破坏用户体验,有时会造成页面卡顿。所以我们应该尽可能少的减少reflow和repain。

当解析过程遇到js时,就停止,等js执行完毕后,接着渲染。这意味着js会阻塞后续资源的下载,这就是为啥需要将js放在文档末尾。

接下来,浏览器会接着发送请求获取在HTML中嵌入的资源

6.断开TCP连接

你可能感兴趣的:(一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?)