用户发出 URL 请求到页面开始解析的这个过程,就叫做导航。
从输入 URL 到页面展示
一.用户输入
浏览器的地址栏会判断输入的是搜索内容还是请求url
是搜索内容,地址栏会使用浏览器默认的搜索引擎拼接搜索内容,形成新的url
是url,地址栏会会根据规则,把这段url附上协议(http,https)
当用户输入关键字并按下回车之后,就会替换成新的页面,beforeunload事件允许页面在退出之前执行方法
当浏览器刚开始加载一个地址之后,左上角标签变成刷新状态,但还是处于 360导航页面,并没有立即进入 https://blog.csdn.net页面, 原因是 需要浏览器主进程接收到渲染进程 "提交文档"消息之后,页面内容才会被替换
二.url请求过程
浏览器主进程通过IPC(进程间通信)把url请求发至网络进程, 网络进程接收到url请求后,开始发起url请求
1.构建请求行
2.查找缓存
3.准备IP地址和端口
4.等待tcp队列
5.建立tcp连接
6.发送http请求 如果发送的是https协议, 还需要建立 TLS 连接。
7.服务器处理HTTP请求, 服务器返回响应头,响应行,响应体
响应头的Content-Type字段,他会告诉浏览器返回的响应体数据是什么类型,
text/html -HTML类型
application/octet-stream -字节流类型,通常按照下载类型处理
Content-Type是下载类型,提交给浏览器的下载管理器,url导航流程结束
Content-Type是HTML类型,继续导航流程
8.关闭tcp连接
三.准备渲染进程
浏览器默认会为每个网页分配一个渲染进程。
但如果新页面和当前页面属于 同一站点 的话,那么新页面会复用父页面的渲染进程
同一站点: 协议和根域名一致 比如 https://www.csdn.net和https://mp.csdn.net, 其中csdn.net是根域名,https是协议,这两个域名是同一站点
四.提交文档
提交文档是指 浏览器主进程将 网络进程 接收到的HTML数据提交给 渲染进程
1. 浏览器主进程 接收到 网络进程的的响应头数据后,便向 渲染进程 发起“提交文档”的消息
2. 渲染进程接收到 “提交文档”的消息后, 会和网络进程建立传输数据的管道
3. 文档数据传输完成之后, 渲染进程会返回 “确认提交”的消息给 浏览器主进程
4. 浏览器主进程接收到“确认提交”的消息后,会更新浏览器的状态:安全状态,地址栏,前进后退的历史状态,并更新web页面
五.渲染阶段
提交文档后,渲染进程便开始页面解析和子资源加载了