简单剖析用户请求响应过程

in Notes with 0 comment

从浏览器向一个特定的URL发送HTTP请求开始,到浏览器接收到服务器的返回结果,这段过程所花费的时间就是用户的请求响应时间。

该请求过程可以分为四个阶段:
1、建立连接;
2、发送请求;
3、返回响应;
4、关闭连接。

如下图所示:
789745642123123146549999999.png

请求过程看着很简单,而且往往是瞬间完成的,但是在实际执行中是经历很多的步骤。整个过程可以做以下的划分:

1、阻塞时间:包括所有的预处理的时间。比如Cache查找和等待网络连接的时间。
当浏览器向服务器发出HTTP请求时,浏览器会首先查找在缓存(Cache)中是否已经有所需要的资源。如果缓存中存在所需的资源而且是可用的,则使用缓存中的资源,避免了一次HTTP请求;如果缓存中不存在所需的资源,则需要连接服务器,在HTTP/1.1协议下,网络连接是需要排队等待直到这个网络连接可用,所以就造成等待网络连接的时间消耗,我们在浏览多图片的网站时,图片迟迟还未加载出来就是在等待连接可用。

2、连接时间:指创建TCP连接到服务器或者代理服务器所花费的时间。
在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的。HTTP是比TCP更高层次的应用层协议,由于规则,只能在底层次协议连接建立之后才能进行更高层协议的连接。因此需要首先完成TCP连接建立,一般TCP连接的端口是80。如果是要建立一个HTTPS的安全连接,那么还需要一个SSL握手过程,此时Keep-Alive连接就会被经常用到,用于保存请求连接,以免多次重复建立连接。

3、发送时间:指发送HTTP请求到服务器的时间。
这个时间长短取决于该请求发送的数据量的大小,例如,使用POST方式则会需要较长的发送时间。

4、等待时间:指花费在等待服务器响应消息的空闲时间。
这个值包括网络延迟和服务器处理请求的时间,同时它也无法通过前端优化方法减少。

5、接收时间:指花费在从服务器读取响应消息的时间。
这个值会受到从服务器返回的消息内容的大小、网络带宽和是否使用HTTP压缩等因素影响。

6、缓存读取:指花费在从浏览器缓存中读取内容或者304响应的时间。
304响应是与条件GET请求相关联的。如果客户端已经完成一个有条件的请求并且请求是允许的,但这个文件并没有改变,服务器应该返回304状态码。304状态码一定不能包含信息主体,通常通过一个头字段后的第一个空行结束。

Responses