最大连接数阻止的 IE7 Ajax 调用
Posted
技术标签:
【中文标题】最大连接数阻止的 IE7 Ajax 调用【英文标题】:IE7 Ajax calls blocked by max connections 【发布时间】:2010-10-02 00:09:12 【问题描述】:我正在进行彗星长轮询以从服务器检索通知。快速请求新页面时存在明显延迟。长轮询请求保持 60 秒。我很有信心,原因是 IE7 正在等待这些请求完成。如果我在注册表中设置 MaxConnectionsPerServer 值,延迟就消失了。
我尝试在窗口卸载时对 ajax 请求调用 abort,但这不起作用。我有警报以确保正在调用中止。
我还能做什么?
【问题讨论】:
【参考方案1】:你是对的,问题是由于 IE 中的 2-connection 限制。
您最好的选择是将长期持有的请求移至不同的域(或子域),这将绕过连接限制。更进一步,您可以使用带有通配符 DNS 的随机子域来改进解决方案。
请注意,这对您的代码有安全隐患,因为所有当前浏览器默认阻止跨域请求。您的解决方法可能包括cross-site HTTP requests、JSONP 和各种 html5 功能,例如 postMessage。
我已经更详细地描述了这个问题here。
【讨论】:
感谢 jvenema,我之前尝试过使用 JSONP 进行跨站点 HTTP 请求。它在没有 SSL 的情况下完美运行。但是,我们的大多数客户群都需要 SSL。我不得不依靠在站点域内使用代理服务。也许我做错了,JSONP 可以与 SSL 一起使用......我将不得不对此进行调查。再次感谢。 另外,知道为什么在请求上调用 abort 不会释放连接吗? 如果您确实中止了请求(xhr?)它应该释放一些东西;但是不要忘记它仍然按顺序处理请求,所以如果你打开了 4 个长期保持的连接,并且你杀死了其中一个,那么另外 3 个仍然会阻塞。 JSONP 可以很好地与 SSL 一起工作,我们一直都在这样做:)以上是关于最大连接数阻止的 IE7 Ajax 调用的主要内容,如果未能解决你的问题,请参考以下文章