从输入URL到页面展示...

327 阅读2分钟

大部分面试官应该都喜欢问这道题,从输入URL到页面展示这段过程中发生了什么

1、用户输入

  1. 在地址栏输入关键字,浏览器会根据自己的规则先判断输入的是搜索内容还是url,如果是搜索内容就会根据默认搜索引擎去搜索,如果是url就会加上协议合成完整的url。
  2. 继续下一步之前,浏览器会给一个beforeunload的机会取消导航。
  3. 标签页上的图标进入加载状态。

2、请求URL

  1. 浏览器进程通过进程间通信(IPC)把url请求发送到网络进程上。
  2. 网络进程查找本地缓存,若有缓存资源直接返回给浏览器进程。
  3. 若无缓存,进行DNS解析,获取请求域名的服务器IP,协议是https还要进行TLS解析。
  4. 利用IP和服务器建立TCP连接,客户端构建请求行,请求头等信息,并把相关cookie等加到请求头中,发送给服务器。
  5. 服务器接收到请求信息,生成响应头、响应行、响应体发给网络进程,当网络进程接收了响应头和响应行之后,就开始解析响应头的内容。

2.1 重定向

解析响应头的内容,当返回的状态码是301或302时,说明指向另一个url,要从location中取,然后发起新请求;状态码200则继续处理请求。

2.2 处理响应数据类型

浏览器根据Content-Type来决定如何显示响应体。如text/html(HTML格式)或application/octet-stream(下载类型),如果是HTML会继续进行渲染进程。

3、渲染进程

每个页面都会配一个渲染进程,除了跟域名和协议相同的属于同一站点。

4、提交文档

  1. 渲染进程发"提交文档"的消息给浏览器进程。
  2. 浏览器进程接收后,开始清理当前旧文档,回复"确认提交"并更新安全状态、地址栏url、前进后退、WEB页面。

5、渲染阶段

  1. 渲染进程收到"确认提交",解析数据、下载子资源,实时更新最新的渲染状态。
  2. 页面生成后,渲染进程发送消息给浏览器进程,加载动画停止。

over