Примечание: я спрашиваю о исходящий ограничение количества одновременных подключений, не входящих, что в достаточной мере рассматривается в существующих вопросах
Современные браузеры обычно открывают большое количество одновременных подключений, чтобы использовать тот факт, что TCP справедливо распределяет полосу пропускания между подключениями. Конечно, это не приводит к справедливому обмену данными между пользователями, поэтому некоторые серверы начали наказывать хосты, которые открывают слишком много соединений. Это ограничение можно настроить на стороне клиента (например, IE MaxConnectionsPerServer
, Fire Fox network.http.max-connections-per-server
), но метод отличается для каждого браузера и версии, и многие пользователи не могут самостоятельно его настроить. Итак, мы переходим к прозрачному HTTP-прокси Squid для централизованного управления загрузкой HTTP.
Как можно ограничить количество одновременных подключений от squid к удаленному веб-серверу, чтобы веб-сервер не воспринимал это как злоупотребление одновременными подключениями? В идеале ограничение будет на адрес источника. Squid должен принимать практически неограниченное количество одновременных запросов от клиентского браузера и отправлять их последовательно удаленному серверу, только N за раз каждому серверу, задерживая (но не отбрасывая) другие.
Для этого потребуется какая-то очередь запросов и межпроцессное взаимодействие, что значительно замедлит обработку запросов. Я не знаю ни одного прокси, который поддерживал бы это.
Обратите внимание, что большинство пользователей на самом деле не меняют количество одновременных подключений в своих браузерах, поэтому проблема не так уж и неудобна.