1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| 1. 用户输入 用户在地址栏输入查询关键字时、地址栏会判断输入的是关键字还是请求的URL 若是搜索内容、地址栏会使用浏览器默认的搜索引擎、合成包含搜索关键字的URL 若输入内容符合URL规则、则解析为URL、浏览器加载一个地址之后、导航栏图表就进入了加载状态、页面没变、需要等待提交文档阶段、页面内容才会替换 2. URL请求过程 浏览器进程通过进程间通信IPC把url请求发送到网络进程、网络进程接收到URL请求后才发起请求 1) 网络进程先查找本地缓存是否缓存了改资源、若有直接返回 2) 没有、进入网络请求流程(DNS解析->ip、若https协议先建立TLS连接) 3) 利用IP地址和服务器建立TCP连接、建立连接后浏览器会构造请求信息(请求行/头)把相关cookie加入请求头、发送请求信息 4) 服务器收到请求后、生产响应数据(响应行/头/体)、发给网络进程、网络进程接收到响应行和响应头之后解析响应头 a. 重定向 - 响应码 301|302 从响应头提取Location、然后发起新的请求、从新开始 b. 响应数据类型处理 Content-Type标记浏览器响应类型 text/html 代表返回数据是HTML格式、继续后续流程 application/octet-stream 返回数据是字节流类型、按照下载类型来处理、请求提交给浏览器的下载管理器 3. 准备渲染进程 默认情况下、Chrome会为每个页面分配一个渲染进程、但某些情况下会多个页面运行在同一渲染进程中 通常: 打开新的页面会使用单独的渲染进程、 若从A页面打开B页面、且AB属于同一站点、则B复用A页面的渲染进程、若是其它情况、会单独创建进程 渲染进程准备好之后、不能立即进入文档解析阶段、因为此时文档还在网络进程中、并未提交给渲染进程、所以下一步是进入提交文档阶段 4. 提交文档 提交文档(响应数据)的请求是浏览器进程发出的、渲染进程接收到消息后、会和网络进程建立传输数据的通道 文档数据传输完成后、渲染进程返回 确认提交 的消息给浏览器进程 浏览器进程在收到确认提交的消息后、更新浏览器界面状态、包含了安全状态、地址栏的url、前进后退的历史状态、并更新web界面 一个完整的导航走完了、进入渲染阶段 5. 渲染阶段 文档一旦被提交、渲染进程就开始页面解析和子资源加载了、一旦页面生成、渲染进程会给浏览器进程发送消息、浏览器进程收到消息停止标签页上的加载动画
|