全过程主要包括三部分:
- DNS解析URL的过程
- 浏览器与服务器的请求交互过程
- 浏览器对接收到的html页面的渲染过程
一、DNS解析URL的过程
在浏览器发出请求之前,需要将域名解析成IP地址。DNS解析即将域名翻译成IP地址的过程。
- 浏览器缓存:浏览器会按照一定频率缓存DNS记录
- 操作系统缓存:如果浏览器缓存中找不到所需DNS记录,则在操作系统中寻找
- 路由缓存
- ISP的DNS服务器:ISP有专门的DNS服务器对应DNS查询请求
- 根服务器:ISP的DNS服务器找不到,需向根服务器发出请求,进行递归查询
二、浏览器与服务器的请求交互过程
- 浏览器想服务器发起TCP连接请求,建立起客户端与服务器端之间的连接。这个过程需要进行3次握手
- 浏览器根据解析到的IP地址和端口号发起http的get请求
- 服务器接收到http请求之后,开始搜索html页面,并使用http返回响应报文
- 若状态码为200显示响应成功,浏览器接收返回的html页面后,开始进行页面的渲染过程
三、页面渲染过程
- 浏览器根据深度遍历的方式把html节点遍历成dom树
- 将css解析成CSS dom树
- 将dom树和CSS dom树构造成render树
- JS根据得到的render树,计算所有节点在屏幕中的位置,后进行布局
- 遍历render树并调用硬件API绘制所有节点