代理是否必须首先完全加载所有内容才能将其发送回去?

时间:2015-04-29 03:00:05

标签: apache http iis proxy http-proxy

我一直在使用代理服务,我想知道它背后的一些细节,关于它的速度和效率。请考虑以下情况:

服务器M上有一个mp3文件,客户想要下载该文件,但他并不想暴露自己,所以他决定使用代理网站下载。因此,首先将get mp3请求发送到代理服务器P,然后代理服务器将为客户端获取该mp3,这是我对某些细节的疑问:

P是否必须首先下载整个mp3文件才能将其传递给客户端?如果是这样,文件会被下载两次(首先在代理服务器上,然后在客户端的机器上),花费大约两倍的时间?

1 个答案:

答案 0 :(得分:1)

代理通常以两种模式运行:HTTP和Connect。

Connect模式适用于HTTPS或ftp等黑盒协议。大多数数据都是无意义的八位字节流。因为它们是加密或非结构化文件。

然而,对于HTTP,代理非常聪明。他们做的一件事就是缓存内容。与通过代理在浏览器中下载网站时的图像和网页内容一样。此外,对于HTTP下的八位字节流,代理显示连接行为,这意味着它们打开中继套接字并允许您下载内容。同时,他们会在本地存储它,如果它不超过一定的大小,文件也将被缓存。

文件也被转发或转发,或者有时称为重写。这个here是一个示例配置文件,显示配置为转发Youtube视频而不缓存它们的squid。

下载和转发不是一种选择的另一个原因是往返时间(RTT)加倍。当您添加另一个减慢HTTP会话速度的RTT时,它实际上是违反直觉的。