Mar*_*ark 12 browser tcp http keep-alive long-polling
我正在使用Firefox,但我想知道浏览器一般如何决定这一点.
似乎当我在很短的时间内两次访问同一个URL时,我的浏览器会尝试为两个请求重新使用TCP相同的连接(这称为keep-alive).但是,当我访问两个不同的URL(但仍由同一服务器提供服务)时,浏览器有时会决定为每个请求打开一个新连接.显然,浏览器不使用每个URL的一个连接策略.
我问这个是因为我正在尝试实现一个使用长轮询的Web服务.我可以想象用户可能希望在同一浏览器的多个选项卡中打开此服务.但是,使用keep-alive,第二个长轮询请求在第一个完成之前不会被发送(至少在Firefox中),因为浏览器正试图将它们都推到同一个套接字中,这是我没想到的设计了这项服务.即使浏览器实现了管道衬里,在我响应第一个请求之前也无法响应第二个请求,因为HTTP要求我按顺序完成响应.
使用HTTP/1.1时,默认情况下,TCP连接保持打开状态以供重用.这比为每个请求启动新连接提供更好的性能.连接可以重复使用,但任何一方都可以随时关闭连接.
您应该阅读HTTP1.1和持久连接的部分.
在您的情况下,它甚至不使用HTTP流水线(没有广泛支持),因为下一个请求是在第一个请求响应之后发送的.
浏览器有一个连接池,并按主机名重用它.一般来说,浏览器不应该为多个主机名重用单个连接,即使这些主机名实际上解析为相同的IP地址.
大多数浏览器允许用户配置或覆盖每个服务器的持久连接数; 大多数现代浏览器默认为六个.如果Firefox 确实阻止了第二个请求,因为已经有一个活动连接,这是Firefox中的一个错误,应该在他们的错误跟踪系统中存档.但如果存在这样的错误,我认为你会看到许多网站被破坏.
| 归档时间: |
|
| 查看次数: |
5525 次 |
| 最近记录: |