IE7 最大连接数阻止了 Ajax 调用

4
我正在使用长轮询技术从服务器获取通知。在快速请求新页面时,会出现显著的延迟。这个长轮询请求会被保持60秒。我相信问题是因为IE7在等待这些请求完成。如果我在注册表中增加MaxConnectionsPerServer值,延迟就会消失。
我尝试在窗口卸载时调用ajax请求的abort方法,但没有起作用。我使用警报来确保已经调用了abort方法。
还有什么其他的方法吗?
1个回答

3

你是正确的,这个问题是由于IE中的2个连接限制引起的。

你最好的选择是将长期持有的请求移动到另一个域名(或子域名),这将绕过连接限制。更进一步,你可以使用带有通配符DNS的随机子域来使解决方案变得更好。

请注意,这会对你的代码产生安全影响,因为所有当前的浏览器默认都会阻止跨域请求。你的解决方法可能包括 跨站HTTP请求、JSONP和各种HTML5功能,如postMessage。

我在这里更详细地描述了这个问题。


谢谢jvenema,我之前尝试过使用JSONP进行跨站HTTP请求。在没有SSL的情况下,它可以完美地工作。然而,我们大部分客户都需要SSL。我不得不退而求其次,在站点域内使用代理服务。也许我做错了,JSONP可以与SSL一起使用...我需要调查一下。再次感谢。 - Jeff Z
还有,为什么在请求上调用abort不会释放连接? - Jeff Z
如果您确实中止了请求(xhr?),它应该释放资源;但不要忘记它仍然按顺序处理请求,因此如果您有4个长期持有的连接处于打开状态,并且您杀死其中一个,其他3个仍将阻塞。而JSONP可以很好地与SSL一起使用,我们一直在使用 :) - Jerod Venema

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接