繁体   English   中英

使用IE6令人难以忍受的缓慢AJAX

[英]Excruciatingly slow AJAX with IE6

我敢肯定,这个头衔会激起许多读者的“我们再来......”的反应。 道歉。 我用Google搜索了这个问题并得到了电话簿。 主要是关于SSL,必须说。 其他人指出IE中可怕的JS引擎。 我找到的互联网咆哮都没有给我带来满意的答复。 所以我想我会在这里发帖......

我正在构建一个Web应用程序,主要是在Firefox中开发的(因为Firebug),在Opera,Chrome,Safari和IE中进行了测试。 很多jQuery,很多AJAX。 Web服务器是Win XP上的Apache。 浏览器响应通常非常快(网络服务器在局域网上没有其他任何东西),IE除外,它的速度非常慢。

我的代码通常按以下方式构建:

module1= function() {
    // JS code backing html in div1
};

$div1.load("div1.html",function() {
    module1();
});

也就是说,模块1的JS代码是浏览器从单词“go”中知道的,虽然我希望在所有浏览器中推迟编译此代码,直到我实际调用module1()闭包,这只是在成功之后加载()。 因此,我可以很容易地相信,IE中可能存在的慢速JS引擎会产生阻力(显示div1)。 然而...

我注意到,虽然IE6会延迟加载我的HTML代码段和所有附带组件(主要是图像),当我启动另一个浏览器(以节省时间)并加载我的网站时,该浏览器将一直挂起,直到IE完成下载。 也就是说,IE完全破坏了我的Apache服务器。

这让我觉得这主要不是一个缓慢的JS解释问题。 事实上,Apache和IE之间可能存在一些握手问题。 我在Apache的日志中没有这方面的证据,因此我想我会问。

有没有人有任何想法? Apache上是否存在(已知)配置问题?

PS:我可能会补充一点,在这些拖延的后期加载过程中,IE的状态栏 - 我相信,这是一个不可靠的进度指示器 - 经常显示我的图标的URL(即非常小的.gif和.png文件)。

最近与IE6一起工作,我可以指出一件对我们有帮助的事情。 我们回顾了所有jQuery代码,以便添加很多(实际上很多):

SetTimeout(function() { <HERE TO REGULAR CODE WE HAD>,0});

这个强制重绘IE6上的事件(某些新的执行环境,如果我理解IE6 js,重新绘制),并且至少,用户可以看到已加载的页面部分。 在加载回调时非常有用。 因此,至少用户感知更好,页面的块出现并且用户对速度的感知更好。 但似乎整个实时也更好。

关于IE6 apache交互,因为你的apache服务器不在你的计算机上但在局域网上你应该尝试:

  • 从另一台机器测试网站,而不是运行IE6的机器(运行困难)
  • 激活mod_status并检查url / status以查看IE6是否使用了多个worker或只使用了一个

IE6可能存在Keepliave请求的问题,或者他可以在一台服务器上运行的并行查询数量有限制。 但是为此我们在问题发生时需要有关HTTP流量的更多信息(并且服务器状态至少是一个好的,也检查扩展状态)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM