导航流程:从输⼊URL到页面展示的过程

从输入网址到展示页面的流程如下
如图浏览器进程主要负责用户交互、⼦进程管理和⽂件储存等功能。网络进程是面向渲染进程和浏览器进程等提供⽹络下载功能。 渲染进程的主要职责是把从⽹络下载的HTML、JavaScript、CSS、图⽚等资源解析为可以显⽰和交互的页面。因为渲染进程所有的内容都是通过⽹络获取的,会存在⼀些恶意代码利⽤浏览器漏洞对系统进⾏攻 击,所以运⾏在渲染进程⾥⾯的代码是不被信任的。这也是为什么Chrome会让渲染进程运⾏在安全沙箱里,就是为了保证系统的安全。
⾸先,用户从浏览器进程⾥输⼊请求信息 输 ; 然后,⽹络进程发起URL请求;服务器响应URL请求之后,浏览器进程就⼜要开始准备渲染进程了; 渲染进程准备好之后,需要先向渲染进程提交⻚⾯数据,我们称之为提交⽂档阶段; 渲染进程接收完⽂档信息之后,便开始解析⻚⾯和加载⼦资源,完成页面的渲染。
这其中,用户发出URL请求到页面开始解析的这个过程,就叫做导航。

用户输入

当用户在地址栏中输⼊⼀个查询关键字时,地址栏会判断输⼊的关键字是搜索内容,还是请求的URL 。 开始加载URL浏览器状态 如果是搜索内容,地址栏会使⽤浏览器默认的搜索引擎,来合成新的带搜索关键字的URL。 如果判断输⼊内容符合URL规则,⽐如输⼊的是 baidu.com,那么地址栏会根据规则,把这段内容加上协议,合成为完整的URL:https://www.baidu.com

URL请求过程

接下来,便进⼊了页面资源请求过程。这时,浏览器进程会通过进程间通信(IPC)把URL请求发送⾄⽹络 进程,⽹络进程接收到URL请求后,会在这⾥发起真正的URL请求流程。那具体流程是怎样的呢? ⾸先,⽹络进程会查找本地缓存是否缓存了该资源。如果有缓存资源,那么直接返回资源给浏览器进程;如果在缓存中没有查找到资源,那么直接进⼊网络请求流程。这请求前的第⼀步是要进⾏DNS解析,以获取请求域名的服务器IP地址。如果请求协议是HTTPS,那么还需要建立TLS连接。 接下来就是利⽤IP地址和服务器建⽴TCP连接。连接建⽴之后,浏览器端会构建请求⾏、请求头等信息,并把和该域名相关的Cookie等数据附加到请求头中,然后向服务器发送构建的请求信息。 服务器接收到请求信息后,会根据请求信息⽣成响应数据(包括响应行、响应头和响应体等信息),并发给 ⽹络进程。等网络进程接收了响应⾏和响应头之后,就开始解析响应头的内容了。

重定向

在接收到服务器返回的响应头后,⽹络进程开始解析响应头,如果发现返回的状态码是301或者302,那么 说明服务器需要浏览器重定向到其他URL。这时⽹络进程会从响应头的Location字段⾥⾯读取重定向的地址,然后再发起新的HTTP或者HTTPS请求,⼀切⼜重头开始了。

响应数据类型处理

Content-Type是HTTP头中⼀个⾮常重要的字段, 它告诉浏览器服务器返回的响应体数据是什么类型,然后浏览器会根据Content-Type的值来决定如何显⽰响应体的内容。
响应头中的Content-type字段的值是text/html,这就是告诉浏览器,服务器返回的数据 是HTML格式。
不同Content-Type的后续处理流程也截然不同。如果Content-Type字段的值被浏览器判断为下载类 下 型,那么该请求会被提交给浏览器的下载管理器,同时该URL请求的导航流程就此结束。但如果是HTML, H 那么浏览器则会继续进⾏导航流程。由于Chrome的⻚⾯渲染是运⾏在渲染进程中的,所以接下来就需要准备渲染进程了.

打开⼀个新⻚⾯采⽤的渲染进程策略就是: 渲染进程准备好之后,还不能⽴即进⼊⽂档解析状态,因为此时的⽂档数据还在⽹络进程中,并没有提交给渲染进程,所以下⼀步就进⼊了提交⽂档阶段。

提交文档

⾸先要明确⼀点,这⾥的“⽂档”是指URL请求的响应体数据。 更新内容如下图所⽰: 通常情况下,打开新的⻚⾯都会使⽤单独的渲染进程; 如果从A页面打开B页面,且A和B都属于同⼀站点的话,那么B页面复⽤A页面的渲染进程;如果是其他情况,浏览器进程则会为B创建⼀个新的渲染进程。 “提交⽂档”的消息是由浏览器进程发出的,渲染进程接收到“提交文档”的消息后,会和⽹络进程建立传输数据的“管道”。 等⽂档数据传输完成之后,渲染进程会返回“确认提交 确 ”的消息给浏览器进程。 浏览器进程在收到“确认提交”的消息后,会更新浏览器界⾯状态,包括了安全状态、地址栏的URL、前进后退的历史状态,并更新Web页面。

下次,我们介绍浏览器如何把代码渲染成页面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值