从输入URL到页面加载完成过程分析

sankigan2019-3-25前端网络与浏览器

整个过程从前端的角度来看大致如下:

1. DNS解析2. TCP连接+HTTP请求3. 浏览器解析渲染页面4. 断开连接

1、DNS解析

首先在本地域名服务器中查询ip地址,如果没有,按照如下顺序: 根域名服务器 => 顶级域名服务器 => ... => 本地域名服务器 . => .com. => google.com. => www.google.com.

2、TCP请求(三次握手)+ HTTP请求

客户端: 我要请求数据,可以吗? 服务器: 可以 客户端: 好的

客户端与服务器建立连接后就可以通信,浏览器向web服务器发送http请求

3、浏览器解析渲染页面

  1. 处理 HTML 标记并构建 DOM 树
  2. 处理 CSS 标记并构建 CSSOM 树
  3. 将 DOM 和 CSSOM 合并成一个渲染树
  4. 根据渲染树来布局,以计算每个结点的几何信息
  5. 调用 GPU 绘制,合成图层,显示在屏幕上

DOMContentLoaded事件触发代表初始的HTML被完全加载和解析,不需要等待CSS,JS,图片加载。

Load事件触发代表页面中的DOM,CSS,JS,图片已经全部加载完毕。

如果相对浏览器渲染这块有更深入的了解,可以看这篇文章

4、断开连接,四次挥手

客户端:我没有数据要发送了,准备挂了 服务器:收到,但我还有一些数据没发送完,稍等一下 ...... 服务器:好了,发送完了,可以断开连接了 客户端:OK,你断开连接吧(内心独白:我将会在2倍的最大报文段生存时间后关闭连接,如果再收到服务器的消息,那么服务器就是没听到我最后这句话,我就再发送一遍)

更新于 2025/2/11 22:37:44