从输入URL到页面加载完成过程分析
整个过程从前端的角度来看大致如下:
1. DNS解析2. TCP连接+HTTP请求3. 浏览器解析渲染页面4. 断开连接
1、DNS解析
首先在本地域名服务器中查询ip地址,如果没有,按照如下顺序: 根域名服务器 => 顶级域名服务器 => ... => 本地域名服务器 . => .com. => google.com. => www.google.com.
2、TCP请求(三次握手)+ HTTP请求
客户端: 我要请求数据,可以吗? 服务器: 可以 客户端: 好的
客户端与服务器建立连接后就可以通信,浏览器向web服务器发送http请求
3、浏览器解析渲染页面

- 处理 HTML 标记并构建 DOM 树
- 处理 CSS 标记并构建 CSSOM 树
- 将 DOM 和 CSSOM 合并成一个渲染树
- 根据渲染树来布局,以计算每个结点的几何信息
- 调用 GPU 绘制,合成图层,显示在屏幕上
DOMContentLoaded事件触发代表初始的HTML被完全加载和解析,不需要等待CSS,JS,图片加载。
Load事件触发代表页面中的DOM,CSS,JS,图片已经全部加载完毕。
如果相对浏览器渲染这块有更深入的了解,可以看这篇文章。
4、断开连接,四次挥手
客户端:我没有数据要发送了,准备挂了 服务器:收到,但我还有一些数据没发送完,稍等一下 ...... 服务器:好了,发送完了,可以断开连接了 客户端:OK,你断开连接吧(内心独白:我将会在2倍的最大报文段生存时间后关闭连接,如果再收到服务器的消息,那么服务器就是没听到我最后这句话,我就再发送一遍)
