注意:我问的是出站并发连接限制(而非入站),现有问题已充分涵盖
现代浏览器通常会同时打开大量连接,以利用 TCP 在连接之间公平共享带宽这一事实。当然,这并不会导致用户之间的公平共享,因此一些服务器已开始惩罚打开过多连接的主机。此限制可以在客户端配置(例如 IE MaxConnectionsPerServer
、Firefox network.http.max-connections-per-server
),但每个浏览器和版本的方法都不同,许多用户无法自行调整。因此,我们转向使用 squid 透明 HTTP 代理来集中管理 HTTP 下载。
如何限制从 squid 到远程 Web 服务器的同时连接数,以便 Web 服务器不会将其视为并发连接的滥用?理想情况下,限制应针对每个源地址。Squid 应接受来自客户端浏览器的几乎无限的并发请求,并按顺序将它们发送到远程服务器,每次只向每个服务器发送 N 个请求,从而延迟(但不丢弃)其他请求。
答案1
这需要某种请求队列和进程间通信,这会使处理请求的速度慢得多。我不知道有任何代理支持这一点。
请注意,大多数用户实际上并不会改变其浏览器中的同时连接数,因此这个问题实际上并不是那么不方便。