#导航流程

5-1

用户发出 URL 请求到页面开始解析的这个过程,就叫做导航

#用户输入

输入后 地址栏会判断输入的关键字是搜索内容,还是请求的 URL:

  • 搜索内容:启用搜索引擎
  • URL:如果符合 URL 规则,浏览器会加上协议

回车后 先触发 beforeunload 事件,可以进行询问用户是否离开等操作 然后进入加载状态,等待提交文档

#网络进程

  • 查找本地缓存是否缓存了该资源,如果缓存就直接返回资源
  • 如果没有缓存,进行 DNS 解析,获取 IP 地址
  • 利用 IP 地址和服务器建立 TCP 连接,如果请求协议是 HTTPS,那么还需要先建立 TLS 连接
  • 浏览器端会构建请求行、请求头等信息,并把和该域名相关的 Cookie 等数据附加到请求头中,然后向服务器发送
  • 服务器根据请求信息生成响应数据(包括响应行、响应头和响应体等信息),并发给网络进程
  • 重定向:状态码是 301,302,307,308 时根据响应头 Location 重定向,可以通过这个方式将 http 请求 重定向为 https 请求
  • 响应数据:通过 Content-Type 响应头区分响应体数据类型,比如 HTML 和 js

#准备渲染进程

Chrome 会为不同站页面分配一个渲染进程,进程在沙箱内

#提交文档

浏览器进程将网络进程接收到的 HTML 数据提交给渲染进程

  • 首先当浏览器进程接收到网络进程的响应头数据之后,便向渲染进程发起“提交文档”的消息
  • 渲染进程接受到“提交文档”消息后,从网络进程接受文档数据,接受完成后给浏览器进程发送“确认提交”消息
  • 浏览器进程收到“确认提交”的消息后,更新浏览器界面历史状态、安全状态、URL ,然后更新页面页面

#渲染阶段

文档提交后,渲染进程开始页面解析与子资源加载,并停止加载动画