代理服务器使网页浏览速度快多少?

代理服务器使网页浏览速度快多少?

代理服务器旨在通过存储 HTTP 对象的副本来加快网页浏览速度并减少流量,对吗?但是,当浏览器向代理服务器发送 HTTP 请求并且代理服务器有副本时,代理服务器仍会向原始服务器发送带有标头的 HTTP 请求,if modified since然后再将副本发送到浏览器。如果对象没有改变,原始服务器将只发送状态为 304 的 HTTP 回复,从而稍微减少传输时间,因为 HTTP 响应中不包含任何额外数据。但是,代理服务器仍然必须启动 TCP 连接并等待服务器的响应,这加起来就是两个 RTT。除此之外,在实际启动 TCP 连接之前,代理服务器还必须检查其内存中是否有客户端请求的 HTTP 对象的缓存副本。我看不出这怎么可能使网页浏览速度更快,在最好的情况下我们节省的只是一点传输时间,因为如果对象没有被修改,原始服务器就不需要发送对象,但在最坏的情况下,代理服务器中的内存访问时间比我们节省的传输时间更长。我误解了什么?显然,代理服务器一定节省了大量的时间,因为它们被广泛使用,但我不知道它如何节省时间。

答案1

HTTP 请求和响应可以包括影响缓存的标头;一些与这个问题相关的:

公共 - 响应可以被任何缓存存储,即使响应通常是不可缓存的。

max-age= - 资源被视为新鲜的最大时间

不可变 - 表示响应主体不会随时间而改变

网站开发人员可以使用它来声明静态文件永远不会改变并且可以永远缓存(例如,在文件名中包含一个版本,以便image-v1.jpg更新image-v2.jpg并且永远不会用相同的名称进行编辑,因此缓存image-v1.jpg始终是有用的),或者页面可以缓存一周,然后再使用您描述的“使用服务器检查”过程重新验证。


但是,代理服务器仍然必须发起 TCP 连接并等待服务器的响应,这总共需要两个 RTT。

如果对此检查的响应为“无变化”,并且响应足够小,可以在一个数据包中发送,则可以避免TCP 慢启动延迟可能涉及通过多个数据包传输完整响应内容。服务器生成“这没有改变”响应的速度也比服务器获取当前内容(例如从数据库中获取,或使用模板生成)并将其排队等待发送的速度快得多。

除此之外,在实际启动 TCP 连接之前,代理服务器还必须检查其内存是否存在客户端请求的 HTTP 对象的缓存副本。

与 Web 请求相比,这非常快。这2012 年的页面(遗憾的是缺少图表)表示他们的 Varnish Cache 实例在 100 微秒内从缓存返回数据,有时甚至快于 10 微秒。在快速连接上,互联网往返时间可能为 5 毫秒,而在慢速连接上,往返地球一半距离的时间可能为 200 毫秒。50-1000更长。

我看不出这怎么可能让网页浏览速度更快,在最好的情况下我们节省的只是一点点传输时间

我们节省:

  • 实际数据传输。页面和 JavaScript 文件的大小可能在兆字节范围内,而且即使在今天,也并非所有连接都很快。

  • 连接建立时间。浏览器每个域可以限制为 2 - 6 个连接,如果页面上需要加载的文件数量超过这个数字,则必须排队。(较新的 HTTP2 和 QUIC 协议解决了这个问题)。

  • 避免拥塞点。工作或大学或共享图书馆的互联网连接可能在途中遇到速度较慢的设备,例如功率不足的路由器或繁忙的网络链接。在此之前从代理获取结果会有所帮助。

  • 钱。企业或大学等可以节省带宽成本。商业互联网连接通常根据以下方式计费:平均带宽使用量,如果您认为您的所有商用台式机或大学生都将下载相同的 Windows 更新、在课程开始时下载相同的 Linux ISO、相同的教育软件安装程序和时间表页面,那么在内部提供缓存内容会更便宜,即使对于最终用户来说速度并不会更快。

答案2

如果最后一个请求是在特定时间范围内,则可以将代理服务器配置为不向远程服务器发送任何请求。

如果它在一秒钟前发送了一个请求并获得了该页面的副本,然后在几秒钟后收到对同一页面的另一个请求,那么可以假定本地副本是完全有效的。

如果上次复制页面的时间是一两分钟前,您可能仍想进行您提到的检查。如果页面很大或托管在慢速链接上,那么您可能仍能节省一两秒的传输时间。

现代动态网页可能需要更频繁的检查,但仍可以节省开支。

答案3

至少有 3 项节省 -

  1. 缩短行程时间。代理可能更接近最终用户,从而缩短延迟时间,这会带来显著的差异。

  2. 节省带宽。至少在世界许多地方,长距离链路价格昂贵,因此饱和且速度缓慢。代理减少了这种拥塞。(25 年前,我记得为 64k 数据支付了 1500 多美元,用于为多个拨号账户提供服务。当然,代理确实有帮助)

  3. 根据相关网站的设计,代理可以显著降低服务器上的 CPU 利用率(但这在反向代理中更多的是考虑)。

答案4

代理服务器根本不会加快网页浏览速度,因为现在几乎所有的网络流量都经过加密,这使得代理无法运行。

代理已基本被其他技术取代,例如:

  • 地理复制。在离您较近的位置复制服务器和数据库
  • CDN
  • ISP 内部的缓存。Netflix 和 Steam 等热门服务将与 ISP 合作,直接向他们提供数据副本

这些现代方法的优势在于与服务本身紧密结合,因此可以在有人提出请求之前更新新内容。

显然,代理服务器一定节省了大量的时间,因为它们被广泛使用,但我不知道它如何节省时间。

这种假设本身应该受到质疑。我认为下载镜像之类的东西更常见,因为它们在现代网络上仍然有效。一所大学可以托管自己的 Debian 镜像,并让所有 Debian 机器通过该镜像进行更新,而不是通过更广泛的互联网进行更新。

仍然有类似于 http 代理的缓存用于其他事物,例如 DNS。每次有人请求 google.com 时,您的 ISP DNS 服务器不会向父 DNS 服务器发出请求。它只是将记录保留一段时间(这可以由域所有者配置,但通常会被忽略),然后在该时间到期后,ISP DNS 服务器将对该记录发出新的请求。

如果您访问未缓存的记录,则确实需要更长的时间,但大多数记录都应该被缓存。这也意味着当域记录发生变化时,需要相当长的时间才能过滤到用户。

相关内容