大部分面试官应该都喜欢问这道题,从输入URL到页面展示这段过程中发生了什么
1、用户输入
- 在地址栏输入关键字,浏览器会根据自己的规则先判断输入的是搜索内容还是url,如果是搜索内容就会根据默认搜索引擎去搜索,如果是url就会加上协议合成完整的url。
- 继续下一步之前,浏览器会给一个beforeunload的机会取消导航。
- 标签页上的图标进入加载状态。
2、请求URL
- 浏览器进程通过进程间通信(IPC)把url请求发送到网络进程上。
- 网络进程查找本地缓存,若有缓存资源直接返回给浏览器进程。
- 若无缓存,进行DNS解析,获取请求域名的服务器IP,协议是https还要进行TLS解析。
- 利用IP和服务器建立TCP连接,客户端构建请求行,请求头等信息,并把相关cookie等加到请求头中,发送给服务器。
- 服务器接收到请求信息,生成响应头、响应行、响应体发给网络进程,当网络进程接收了响应头和响应行之后,就开始解析响应头的内容。
2.1 重定向
解析响应头的内容,当返回的状态码是301或302时,说明指向另一个url,要从location中取,然后发起新请求;状态码200则继续处理请求。
2.2 处理响应数据类型
浏览器根据Content-Type来决定如何显示响应体。如text/html(HTML格式)或application/octet-stream(下载类型),如果是HTML会继续进行渲染进程。
3、渲染进程
每个页面都会配一个渲染进程,除了跟域名和协议相同的属于同一站点。
4、提交文档
- 渲染进程发"提交文档"的消息给浏览器进程。
- 浏览器进程接收后,开始清理当前旧文档,回复"确认提交"并更新安全状态、地址栏url、前进后退、WEB页面。
5、渲染阶段
- 渲染进程收到"确认提交",解析数据、下载子资源,实时更新最新的渲染状态。
- 页面生成后,渲染进程发送消息给浏览器进程,加载动画停止。
over