我一直在使用代理服务,我想知道它背后的一些细节,关于它的速度和效率。请考虑以下情况:
服务器M上有一个mp3文件,客户想要下载该文件,但他并不想暴露自己,所以他决定使用代理网站下载。因此,首先将get mp3请求发送到代理服务器P,然后代理服务器将为客户端获取该mp3,这是我对某些细节的疑问:
P是否必须首先下载整个mp3文件才能将其传递给客户端?如果是这样,文件会被下载两次(首先在代理服务器上,然后在客户端的机器上),花费大约两倍的时间?
答案 0 :(得分:1)
代理通常以两种模式运行:HTTP和Connect。
Connect模式适用于HTTPS或ftp等黑盒协议。大多数数据都是无意义的八位字节流。因为它们是加密或非结构化文件。
然而,对于HTTP,代理非常聪明。他们做的一件事就是缓存内容。与通过代理在浏览器中下载网站时的图像和网页内容一样。此外,对于HTTP下的八位字节流,代理显示连接行为,这意味着它们打开中继套接字并允许您下载内容。同时,他们会在本地存储它,如果它不超过一定的大小,文件也将被缓存。
文件也被转发或转发,或者有时称为重写。这个here是一个示例配置文件,显示配置为转发Youtube视频而不缓存它们的squid。
下载和转发不是一种选择的另一个原因是往返时间(RTT)加倍。当您添加另一个减慢HTTP会话速度的RTT时,它实际上是违反直觉的。