浏览器输入URL后HTTP请求返回的完整过程
- 浏览器API 里有个performs ,用来记录所有的每个时间点上,时间过程的消耗,通过这个API performs 进行记录
step1
最开始我们要发起一个请求的时候,比如说是在浏览器里面输入一个url,然后按了一下回车的时候。那么最开始他要去做一个redirect,那为什么一开始就要做redirect呢?因为我们的浏览器可能记录了你这个地址已经永久跳转成一个新的地址,所以一开始浏览器就要先去判断一下我需不需要你redirect以及我要redirect到哪里
- startTime (开始时间)
- redirectStart(开始跳转)
Redirect (跳转)
- 跳转结束
step2
然后第2步是要去看缓存,因为你请求了这个资源可能已经缓存过了,所以呢,我们要去看App cache里面它的缓存是否有,那么如果没有缓存,那这个时候呢,我就要去实际的服务器那边请求资源
- fetchStart (fetch开始)
App cache (应用缓存)
step3
那么因为我们输入的是域名,那么域名要对应成IP之后,我们才能真正的访问到服务器,所以呢,这个时候要先去查找一个域名对应的IP地址,所以这叫DNS解析
- domainLookupStart 域名解析开始
DNS (DNS查找)
domainLookupEnd 域名解析结束
step4
然后有了IP之后我们就要实现TCP连接,那么创建TCP连接,我们要经过一个TCP的三次握手之后,才能真正的把连接创建起来,而且同时如果我们这个请求是HTTPS的,那么要创建一个HTTPS的连接,它跟TCP的三次握手又不一样,因为它中间要有一个保证安全的数据传输的过程,那么这个时候连接创建好了之后
- connectStart 开始创建链接
- secureConnectStart 开始创建安全链接
TCP (创建TCP链接)
connectEnd 创建链接结束
step5
我们才真正开始发送HTTP请求的数据包,我们请求数据包发送完成之后,服务器接收到这个数据,它进行一个数据操作之后返回我们这个请求下的内容
- requestStart 开始发送请求
Request (发送请求)
step6
那么它就是开始返回数据,返回数据之后,这一个HTTP请求才真正的完成
- responseStart 开始接收返回
Response (接受响应)
- responseEnd 结束接收返回
总结
- 这也就是从我们打开浏览器输入url之后,怎一个有关于数据加载的过程所会经历的每一个时间点。