网页访问性能

一般用户眼中,网页访问就是快与慢。下面对这个过程做一些定量分析。

术语定义

定义几个术语:
dnst:DNS查询时间
ct: 连接建立时间
rt: 发出请求开始,到收到响应的第一个字节的时间
dt: 网页内容下载时间
plt: 网页加载时间:从发出DNS请求到下载完页面的整个过程的耗时

访问网页的过程如下图所示:
网页访问性能_第1张图片
首先是DNS查询,获取要访问的主机的IP地址。之后发送连接请求,通过三次握手同web服务器建立起一个TCP连接。连接建立成功后,客户端发送HTTP请求,Web服务器解析请求,然后返回所请求的网页。客户端收完数据之后,通过解析、渲染把网页呈现出来。
响应的网页加载时间就包括:dnst, ct, rt, dt。

DNS查询时间

url(网址)是为了帮助人们记忆的,在应用中,首先要获得IP地址才能发起连接,DNS查询就是根据url获得IP。这个过程是很耗时间的:
在相对较快速的有线网络环境下,平均值为数十毫秒左右;2G网络环境下,平均值在几百毫秒左右;在网络很差的移动环境下,平均值达到几秒左右。
网页访问性能_第2张图片
上图是有线网络下,收集的3天中的数据。可以看到,在网络空闲时段,dns查询时间要低的多,而且比较稳定。
移动网络下,该值要大的多,且波动较大

网页访问性能_第3张图片

如果能省掉这一步骤,在移动网络下就能减少几百毫秒的plt。这样的改善是相当可观的。客户端往往会采用DNS预解析或想办法在用户访问网页时直接使用现成的IP地址来解决DNS耗时的问题。

ct(连接建立时间)

ct时间实际上就是三次握手的时间,这个时间主要与客户端与服务器之间的距离有关,因此是相对稳定的。握手传输数据量也很小,因此也是几个部分中耗时最小的。
有线网络在30-40毫秒左右,移动网络在600毫秒左右

网页访问性能_第4张图片
同样,在移动网络下波动更大,如下图:
网页访问性能_第5张图片
ct时间基本没有改进的余地(对客户端开发者而言)。能做的就是让服务器离客户端近一点(CDN)。


rt(发出请求开始,到收到响应的第一个字节的时间)

rt受到客户端与服务器之间的距离和服务器负载有关,当然网络因素自不别说。服务器负载大时,请求可能要过一段时间才能得到服务器的响应,所以rt与时段的关系很大。在网络空闲时,会小得多。。rt是占比最大的部分,如下图所示:
网页访问性能_第6张图片
对于客户端开发者而言,你没办法控制影响rt的各个因素。我们能做点什么呢?这时候缓存发生作用了。一般而言,网页上的很多资源都是重复引用的,比如多个网页都用到了某张图片,而且很多的资源在一段时间内是不会更改的,我们可以把它缓存下来,等下次需要是可以直接从本地加载。用户不需要感知这个过程,但网页加载变快了, 流量也省了。据统计有60%左右的网页资源是可以缓存的。好的缓存策略对提升网页浏览体验的效果最明显。毕竟,最快的请求就是不发请求。
在有限网络下,平均rt时间又近200毫秒左右。移动网络下差不多要2秒左右。


dt(内容下载时间)

dt其实是占比很小的。与ct差不多。如下图:


网页访问性能_第7张图片


四者之间的关系

从上图可以看到4 条线有大致相同的变化趋势。其中ct 时间是最稳定的,这是因为ct 时间主要 与服务器与客户端之间的距离有关。rt 时间是波动最大的,这是因为rt 时间主要与服务 器负载有关。dns, ct, rt, dt 总体来讲具有正向相关性,它们随时间的变化趋势总体上是一样。意思是,一个部分快,其它部分也快。


你可能感兴趣的:(网页访问性能)