-
浏览器自动补全协议、端口:
http协议默认端口是80 ,https协议默认端口是 443
-
进行URL编码,将非ASCII码转换成ASCII码
-
浏览器根据URL地址来查找本地缓存,根据缓存规则看是否命中缓存,若命中缓存则直接使用缓存,不用在发出请求
-
通过DNS解析找到服务器IP地址
-
浏览器向服务器发出TCP连接申请,完成三次握手后,建立通信连接
-
若使用了HTTPS协议,还会进行SSL握手,建立加密信道,使用SSL握手时,会确定是否使用HTTP2
http2要求必须是HTTPS协议
-
浏览器确定要附带哪些Cookie到请求头中
-
浏览器设置好请求头、协议版本、cookie、发出请求
-
服务器处理请求,进入后端处理流程。随后,服务器响应一个HTTP报文交给浏览器
-
浏览器根据使用的协议版本,以及connection字段的约定,决定是否要保留TCP连接
-
浏览器根据响应状态码决定如何处理这一次响应
-
浏览器根据响应头中的Content-Type字段识别响应类型,如果是 text/html ,则对响应体的内容进行 html 解析,否则进行其他处理
-
浏览器根据响应头的其他内容完成缓存、 cookie的设置
-
浏览器从上到下解析HTML ,遇到外部链接资源,则进一步请求资源
-
解析过程中生成DOM、CSSOM树,进一步将二者结合形成Render树,随后对渲染树中的每个节点计算位置和大小(reflow),最后利用GPU把每个节点绘制到屏幕(repaint)
-
在解析过程中还会触发一系列事件,DOM树完成后会触发DOMContentLoaded事件,当所有资源加载完毕后会触发load事件