我使用的是Firefox浏览器,但我想知道浏览器通常是如何决定这个的。
当我在短时间内两次访问同一个URL时,我的浏览器似乎会尝试重用TCP相同的连接来处理这两个请求(这被称为keep-alive)。然而,当我访问两个不同的URL(但仍由同一服务器提供)时,浏览器有时会决定为每个请求打开一个新的连接。显然,浏览器没有使用一连接一URL的策略。
我之所以问这个问题,是因为我正在尝试实现一个使用长轮询的Web服务。我可以想象用户可能希望在同一浏览器的多个选项卡中打开此服务。然而,在使用keep-alive时,第二个长轮询请求不会被发送,直到第一个请求完成(至少在Firefox中),因为浏览器正在尝试将它们都塞进同一个套接字中,这是我设计服务时没有预料到的。即使浏览器实现了管道化,我也无法在响应第一个请求之前响应第二个请求,因为HTTP要求我按顺序完成响应。