理解延迟
延迟是指数据包从源到目的地的传输时间。在性能优化的方面,重要的是要优化以减少延迟的原因,并测试模拟高延迟的站点性能,以优化连接不良的用户体验。本文解释了什么是延迟、它如何影响性能、如何测量延迟以及如何减少延迟。
什么是延迟?
延迟通常被认为是从用户发出请求到响应返回到该用户的时间。在第一个请求中,对于前 14Kb 字节,延迟较长,因为它包括 DNS 查找、 TCP 握手、安全 TLS 协商。后续请求将具有较少的延迟,因为与服务器的连接已建立。
延迟描述了网络或互联网连接上的延迟量。低延迟意味着没有或几乎没有延迟。高延迟意味着存在许多延迟。提高性能的主要目标之一是减少延迟。
与单个资源(特别是基本 HTML 页面)相关的延迟可能看起来微不足道。但网站通常涉及多个请求:HTML 包括对多个 CSS、脚本和媒体文件的请求。这些请求的数量和大小越大,高延迟对用户体验的影响就越大。
在低延迟连接上,请求的资源将几乎立即出现。在高延迟连接上,请求发送到资源返回之间会有明显的延迟。我们可以通过测量数据从一个网络位置到另一个网络位置移动的速度来确定延迟量。
延迟可以通过多种方式测量,例如,发送资源请求所需的时间,或从浏览器请求资源到请求资源到达浏览器的整个往返行程的长度。
网络限速
要模拟低带宽网络的延迟,您可以使用开发者工具并切换到较低端的网络连接。
在开发者工具中,在网络表下,您可以将限速选项切换到 2G、3G 等。不同的浏览器开发者工具具有不同的预设选项,模拟的特性包括下载速度、上传速度和最小延迟,或发送数据包所需的最小时间。一些预设的大致值包括
选择 | 下载速度 | 上传速度 | 最小延迟 (ms) |
---|---|---|---|
GPRS | 50 kbps | 20 kbps | 500 |
普通 2G | 250 kbps | 50 kbps | 300 |
良好 2G | 450 kbps | 150 kbps | 150 |
普通 3G | 750 kbps | 250 kbps | 100 |
良好 3G | 1.5 Mbps | 750 kbps | 40 |
普通 4G/LTE | 4 Mbps | 3 Mbps | 20 |
DSL | 2 Mbps | 1 Mbps | 5 |
Wi-Fi | 30 Mbps | 15 Mbps | 2 |
网络计时
此外,在网络选项卡上,您可以查看每个请求完成需要多长时间。我们可以查看 267.5Kb SVG 图片资源下载需要多长时间。
当请求在队列中等待网络连接时,它被认为是阻塞的。当通过 HTTP 对单个服务器进行过多的同时连接时,就会发生阻塞。如果所有连接都处于使用状态,则浏览器无法下载更多资源,直到释放一个连接,这意味着这些请求和资源被阻塞。
DNS 解析是执行 DNS 查找所需的时间。主机名越多,需要执行的 DNS 查找次数就越多。
连接是 TCP 握手 完成所需的时间。与 DNS 类似,服务器连接的数量越多,创建服务器连接所需的时间就越多。
TLS 握手是建立安全连接所需的时间。虽然 TLS 握手比不安全的连接需要更长的时间才能连接,但安全连接所需的额外时间是值得的。
发送是将 HTTP 请求发送到服务器所需的时间。
等待是磁盘延迟,服务器完成响应所需的时间。磁盘延迟曾经是性能关注的主要领域。但是,随着计算机内存或 CPU 的改进,服务器性能也得到了提高。根据服务器所需内容的复杂程度,这仍然可能是一个问题。
接收是下载资源所需的时间。接收时间由网络容量和资源文件大小共同决定。如果图像已被缓存,这将几乎是即时的。如果我们进行了限速,接收可能需要 43 秒!
测量延迟
网络延迟是指数据请求从发出请求的计算机到响应的计算机所需的时间。包括数据字节从响应计算机返回到请求计算机所需的时间。它通常被测量为往返延迟。
磁盘延迟是指从计算机(通常是服务器)收到请求到计算机返回响应所需的时间。