2010-10-02 30 views
4

我正在做彗星长轮询以从服务器检索通知。快速请求新页面时会出现严重延迟。长期轮询请求持续60秒。我很有信心,原因是IE7正在等待这些请求完成。如果我在注册表中启动MaxConnectionsPerServer值,延迟就消失了。通过最大连接阻止IE7 Ajax调用

我试着调用窗口卸载的ajax请求放弃,但没有奏效。我有警报以确保中止正在被调用。

我还能做什么?

回答

3

你是对的,这个问题是由于IE中的2连接限制。

您最好的选择是将长期请求移动到不同的域(或子域),这将绕过连接限制。进一步考虑这个想法,你可以使用带有通配DNS的随机子域名,使解决方案更好。

请注意,这会对您的代码造成安全隐患,因为所有当前浏览器在默认情况下都会阻止跨域请求。您的解决方法可能包括cross-site HTTP requests,JSONP和各种HTML5功能,如postMessage。

我已经详细描述了这个问题here

+0

谢谢jvenema,我之前尝试过使用JSONP的跨站点HTTP请求。它没有SSL的完美工作。但是,我们的大部分客户群都需要SSL。我必须重新使用站点域中的代理服务。也许我做错了,JSONP可以使用SSL ......我必须调查一下。再次感谢。 – 2010-10-04 18:03:53

+0

此外,任何想法为什么调用请求中止不释放连接? – 2010-10-04 18:06:50

+0

如果你实际上放弃了请求(xhr?)它*应该*释放东西;但不要忘记,它仍然按顺序处理请求,所以如果你有4个长期连接打开,并且你杀了其中一个,其他3个仍然会被阻塞。和JSONP可以使用SSL就好,我们一直这样做:) – jvenema 2010-10-04 19:35:07