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

