浏览器进程、渲染进程和网络进程的主要职责

  • 浏览器进程主要负责用户交互、子进程管理和文件储存等功能。
  • 网络进程是面向渲染进程和浏览器进程等提供网络下载功能。
  • 渲染进程的主要职责是从网络下载的HTML、JavaScript、CSS、图片等资源解析为可以显示和交互的页面。

从输入URL到页面展示,这中间发生了什么?

  1. 用户在地址栏输入关键字,地址栏会判断是搜索内容还是请求URL,并且将输入的字段补全为完整的URL
  2. 浏览器进程会把URL通过IPC把请求发送到网络进程,网络进程会查找本地缓存有没有缓存,如果有缓存,直接返回资源给浏览器进程,如果再缓存中没有查找到资源,直接进入网络请求流程。
  3. 请求第一步是DNS解析,以获取请求域名的服务器IP地址,然后利用IP地址和服务器建立TCP连接。
  4. 连接建立之后,浏览器端会构建请求行、请求头等信息,并把和该域名相关的Cookie等数据附加到请求头中,然后向服务器发送构建的请求信息。
  5. 服务器接收到请求信息后,会根据请求信息生成响应数据
  6. 如果返回的状态码是301,浏览器会根据返回的Location字段重新导航到新的地址上。如果返回的是正常的状态码200,浏览器就继续处理请求了。浏览器还会根据响应体的Content-Type的值来判断是下载类型还是HTML
  7. 准备渲染进程,打开新的页面会使用单独的渲染进程,如果A和B都属于同一站点的话,B就会复用A的渲染进程。
  8. 提交URL请求的响应体数据,“提交文档”是由浏览器进程发出的,渲染进程接收到“提交文档”的消息后,会和网络进程建立传输“管道”,等数据传输完成后,渲染进程会返回“确认提交”的消息给浏览器进程,浏览器进程收到后,更新浏览器界面状态
  9. 渲染阶段,一旦文档被提交,渲染进程便开始页面解析和子资源加载了。加载完成之后,渲染进程会发消息给浏览器进程,浏览器进程收到之后,会停止标签图标上的加载动画。

04.1从输入 URL 到页面展示完整流程示意图.png