我有一个动态 ajaxy 应用程序,当用户关闭资源管理器窗口时我保存状态。它在所有浏览器中都可以正常工作,但在 IE 中存在问题。关闭两次应用程序选项卡后,我无法再连接到服务器。
我的理论是,在关闭选项卡时与服务器的连接无法完成,并且 ie7 认为它与服务器有 2 个未完成的连接,因此无限期地将新连接排队。
任何人都经历过这种情况,任何解决方法或解决方案?
我有一个动态 ajaxy 应用程序,当用户关闭资源管理器窗口时我保存状态。它在所有浏览器中都可以正常工作,但在 IE 中存在问题。关闭两次应用程序选项卡后,我无法再连接到服务器。
我的理论是,在关闭选项卡时与服务器的连接无法完成,并且 ie7 认为它与服务器有 2 个未完成的连接,因此无限期地将新连接排队。
任何人都经历过这种情况,任何解决方法或解决方案?
在 IE 中,如果您使用长轮询 AJAX 请求,您必须在“卸载”时关闭 XHR 连接。否则,即使您离开您的网站,它也会被浏览器保持活动状态。这些保持活动的连接将导致挂起,因为您的浏览器将达到最大打开连接限制。
在其他浏览器中不会出现此问题。
好吧,您可以很容易地绕过连接限制;只需创建一个通配符域并指示您的应用循环子域;egarsrc.dmvnoc.com、b.rsrc.dmvnoc.com 等,用于我的netMail 应用程序。如果没有这个技巧,在 LAN 上预加载所有图像大约需要 30 秒(因为 MSIE 的低连接限制),但有了它,图像下载大约需要 1 秒。
如果您需要将脚本与此技巧相结合,只需document.domain
在新脚本中设置为父级即可。
但是,您可能希望检查点更改状态 - 用户可能会丢失他们的网络连接,或者他们的计算机可能会崩溃。如果你想减少网络流量,让客户端简单地设置一个包含相关状态的 cookie——你可以在里面放很多东西(3000 字节左右)然后服务器在下一个连接上自动获取它——它在哪里可以保存结果(就像现在一样)并删除 cookie 以表明它已保存状态。