Я использую Firefox, но я хотел бы знать, как браузеры решают это в целом.
Кажется, что когда я получаю доступ к одному и тому же URL дважды за короткий промежуток времени, мой браузер пытается повторно использовать одно и то же TCP-соединение для обоих запросов (это называется keep-alive). Однако когда я получаю доступ к двум разным URL-адресам (но все еще обслуживается одним и тем же сервером ), браузер иногда решает открыть новое соединение для каждого запроса. Очевидно, что браузер не использует политику «одно соединение на URL».
Я спрашиваю об этом, потому что я пытаюсь реализовать веб-сервис, который использует длинный опрос. Я могу представить, что пользователь может захотеть открыть этот сервис в нескольких вкладках в одном браузере. Однако при использовании keep-alive второй длинный запрос на опрос не отправляется до тех пор, пока не завершится первый (по крайней мере, в Firefox), поскольку браузер пытается запихнуть их обоих в один и тот же сокет, чего я не ожидал, когда спроектировал сервис. Даже если в браузере реализована конвейерная разметка, я не смогу ответить на второй запрос до того, как отвечу на первый, потому что HTTP требует, чтобы я выполнил ответы по порядку.