主要介绍时间参数和这些参数之间的关系
参数介绍
Stalled(阻塞)
浏览器对同一个主机域名的并发连接数有限制,因此如果当前的连接数已经超过上限,那么其余请求就会被阻塞,等待新的可用连接;此外脚本也会阻塞其他组件的下载;
DNS Lookup(域名解析)
请求某域名下的资源,浏览器需要先通过DNS解析器得到该域名服务器的IP地址。在DNS查找完成之前,浏览器不能从主机名那里下载到任何东西。
Initial connection(初始化连接)
TCP建立连接的三次握手时间
SSL(包含于HTTPS连接中)
http是超文本传输协议,以明文方式发送内容,不提供任何方式的数据加密,如果被不法分子截取浏览器和服务器之间的传输报文,会获取其中的信息。
https 是安全套接字层超文本传输协议,就是在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
因此建立HTTPS连接的时间相当于三次握手的时间+SSL时间。
Request sent(发送请求)
发送HTTP请求的时间(从第一个bit到最后一个bit)
Waiting(等待响应)
通常是耗费时间最长的。从发送请求到收到响应之间的空隙,会受到线路、服务器距离等因素的影响。
Content Download(下载)
下载HTTP响应的时间(包含头部和响应体)
参数之间的关系
图一中的 Time
表示从请求开始到响应结束所花费的时间。
T
i
m
e
=
R
e
q
u
e
s
t
s
e
n
t
+
W
a
i
t
i
n
g
+
C
o
n
t
e
n
t
D
o
w
n
l
o
a
d
Time = Request sent + Waiting + Content Download
Time=Requestsent+Waiting+ContentDownload
图二右下角的时间我们假设为 time
表示从产生请求,开始排队到成功接收到响应的总时间。
t
i
m
e
=
T
i
m
e
+
Q
u
e
u
e
i
n
g
+
S
t
a
l
l
e
d
time = Time + Queueing + Stalled
time=Time+Queueing+Stalled
图一中最下面一栏的 Load
表示页面所有内容全部加载完毕的时间。 Queue Time
位于图二最上面,表示请求开始排队的时间。
L
o
a
d
=
m
a
x
(
t
i
m
e
+
Q
u
e
u
e
t
i
m
e
)
Load = max(time + Queue time)
Load=max(time+Queuetime)
图二最上面的 Start time
表示请求开始发出的时间。
S
t
a
r
t
t
i
m
e
=
Q
u
e
u
e
t
i
m
e
+
Q
u
e
u
e
i
n
g
+
s
t
a
l
l
e
d
Start time = Queue time + Queueing + stalled
Starttime=Queuetime+Queueing+stalled
三个完成时间的介绍
DOMContentLoaded
DOM树构建完成。即HTML页面由上向下解析HTML结构到末尾封闭标签 。
Load
页面加载完毕。DOM树构建完成后,继续加载html/css中的图片资源等外部资源,加载完成后视为页面加载完毕。其中,DOMContentLoaded 会比 Load 时间小,两者时间差大致等于外部资源加载的时间。
Finish
Finish 时间与DOMContentLoaded 和 Load 并无直接关系。Finish 时间是页面上所有 http 请求发送到响应完成的时间,HTTP1.0/1.1 协议限定,单个域名的请求并发量是 6 个,即Finish是所有请求(不只是XHR请求,还包括DOC,img,js,css等资源的请求)在并发量为6的限制下完成的时间。
如果finish的时间比较大。说明页面上的请求资源比较大,需要优化。
页面发送请求和页面解析文档结构,分属两个不同的线程,所以 Finish 时间与DOMContentLoaded 和 Load 并无直接关系。