网络延迟是数据包从一个地方到另一个地方所需的时间。降低延迟是构建良好用户体验的重要组成部分。
阅读本文后,您将能够:
复制文章链接
延迟是数据从网络上的一个点传递到另一个点所需的时间。假设纽约的服务器 A 向伦敦的服务器 B 发送一个数据包。服务器 A 在格林威治标准时间 04:38:00.000 发送数据包,服务器 B 在格林威治标准时间 04:38:00.145 接收数据包。此路径上的延迟量是这两个时间之间的差值:0.145 秒或 145 毫秒。
大多数情况下,延迟是在用户设备(“客户端”设备)和数据中心之间测量的。此测量值可帮助开发人员了解网页或应用程序为用户加载的速度。
尽管 Internet 上的数据以光速传播,但由于 Internet 基础设施设备造成的距离和延迟的影响,延迟永远无法完全消除。但延迟可以并且应该最小化。大量的延迟会导致网站性能下降, 对 SEO 产生负面影响 ,并可能导致用户完全离开网站或应用程序。
网络延迟的主要原因之一是距离,特别是发出请求的客户端设备与响应这些请求的服务器之间的距离。如果一个网站托管在俄亥俄州哥伦布市的数据中心,它将很快收到来自辛辛那提(距离大约 100 英里)用户的请求,可能在 5-10 毫秒内。另一方面,来自洛杉矶(距离大约 2,200 英里)用户的请求将需要更长的时间才能到达,接近 40-50 毫秒。
增加几毫秒似乎并不算多,但客户端和服务器建立连接所需的所有来回通信、页面的总大小和加载时间,以及数据沿路经过的网络设备,都会导致延迟加剧。客户端发出请求后,响应到达客户端设备所花费的时间量称为往返时间 (RTT) 。RTT 等于延迟量的两倍,因为数据必须在两个方向上传输(来回)。
穿越互联网的数据通常不仅要跨越一个网络,还要跨越多个网络。HTTP 响应需要通过的网络越多,造成延迟的机会就越多。例如,当数据包跨越网络时,它们会通过互联网交换点 (IXP)。在那里,路由器必须处理和路由数据包,有时路由器可能需要将它们分解为较小的数据包,所有这些都会导致 RTT 增加几毫秒。
延迟、带宽和吞吐量都相互关联,但是它们衡量的是不同的事物。带宽是在任何给定时间可以通过网络的最大数据量。吞吐量是给定时间段内实际通过的平均数据量。吞吐量不一定等于带宽,因为它会受到延迟和其他因素的影响。延迟是时间的度量,而不是某时段内下载的数据量。
使用 CDN(内容交付网络)是减少延迟的重要一步。CDN 会缓存静态内容并将其提供给用户。(使用 Cloudflare CDN,还可以通过 Cloudflare Workers 缓存动态内容。)CDN 服务器分布在多个位置,因此内容存储在距离最终用户更近的位置,无需传输很远的距离即可到达用户。这意味着加载网页将花费更少的时间,从而提高网站的速度和性能。
除了延迟之外,其他一些因素也会降低性能。Web 开发人员可以最大程度地减少渲染阻塞资源的数量(例如,最后加载 JavaScript),优化图像以加快加载速度,并尽可能减小文件大小。代码极简化是减少 JavaScript 和 CSS 文件大小的一种方法。
通过策略性地首先加载某些资产,可以提高感知到的网页性能。可以将网页配置为首先加载页面的上半版版面区域,以便用户在页面加载完之前就可以开始与页面进行交互(上半版版面指用户向下滚动之前在浏览器窗口中显示的内容)。网页也可以使用延迟加载技术,仅在需要时加载资产。这些方法实际上并没有改善网络延迟,但是确实改善了用户对页面速度的感知。
有时,网络“延迟”(网络性能缓慢)是由用户端的问题引起的,而不是服务器端的问题。如果网络性能缓慢是一个持续存在的问题,消费者始终可以选择购买更多带宽,尽管带宽不是网站性能的保证。切换到以太网而不是 WiFi 可带来更一致的互联网连接,并且通常会提高互联网速度。用户还应通过定期应用固件更新并在必要时完全更换设备,以确保其互联网设备为最新。