IE7 Javascript性能

时间:2009-06-15 01:07:00

标签: javascript jquery ajax web-services asp.net-ajax

我正在尝试开发一个具有相当多基于客户端的脚本的应用程序。该页面具有基于不同输入相互交互的部分。问题是当你在页面上获得大量内容时,由于与这个浏览器集成的javascript引擎很差,因此在IE7中页面的播放速度会逐渐减慢,部分原因是页面上有相当多的数据。

我已经在使用Web服务了,我可以使用基于ID的选择器的JQuery,以及尽可能少的效果和动画。

你们有什么技巧可以用来优化吗?

6 个答案:

答案 0 :(得分:3)

在分析器中运行您的代码,看看它实际上在做什么。查看您的时间花在哪里。 IE8提供IE7兼容性,并在其开发人员工具中包含一个不错的分析器。

要直接在IE7中进行性能分析,您将不得不使用Visual Web Developer或与MS Office捆绑在一起的调试器。更多的愚蠢是必要的,但它可以让它工作。每次我需要在一台新电脑上进行设置时,我花了一个小时或更长的时间来弄清楚它的神奇咒语,但它是可行的。

答案 1 :(得分:3)

一对不起眼的建议......

  1. Flash作为协处理器。如果您有计算上昂贵的事情,可以将它们交给Flash。 ActionScript将比IE糟糕的JS更快。但是,请注意,如果在JS和Flash之间来回传输大量数据,则速度非常慢。
  2. Google Gears。您可以通过Web工作人员加快速度。当您检测到IE7时,请说升级到IE8或安装Google Gears会改善体验。
  3. 可能Silverlight可以用作协处理器。但是,我没有经验。
  4. 你能说出什么慢吗?是你触摸DOM的时候吗?

答案 2 :(得分:2)

我觉得这些答案中的一些可能会错过明显的答案。

您使用的算法的效率如何?线性? Logorithmic?指数?在我看来,如果JAVASCRIPT越来越慢,随着文档越来越大,那么你的代码的效率就是问题,而不是MS的问题。 IE浏览器javascript很慢,但是什么让你如此确定它特别是浏览器的问题?其他javascript引擎可以用吗?

在不了解您正在做什么或如何做的事情的情况下,一种方法是权衡内存使用速度 - 缓存以前的结果,以及其他优化策略,如果你读过这本书或那个关于编程的网站。

要记住的另一件事是dom交互真的很慢。如果您可以重新组织代码以实现相同的目标,但在dom中操作较少,那将提高性能

答案 3 :(得分:2)

一些非常规则的陷阱几乎完全属于DOM,这在浏览器中很慢。尝试尽可能使用innerHTML。这不是符合标准的做事方式,但它到目前为止最快。

如果您使用以下内容循环遍历DOM元素:

for (var i = 0; i < domNodes.length; i++) { ... }

请注意,每次请求NodeList的长度时,都会执行相当昂贵的查找操作。你最好缓存NodeList的长度,如下所示:

for (var i = 0, il = domNodes.length; i < il; i++) { ... }

这里的性能改进令人难以置信。 Robert Nymanfor循环进行了有趣的比较。如果您从未听说过这种情况,性能提升可能会让您感到惊讶。

答案 4 :(得分:0)

这是一个优秀的谷歌技术谈话视频javascript优化由javascript大师尼古拉斯C.扎卡斯 http://www.youtube.com/watch?v=mHtdZgou0qU

他建议你使用局部变量来限制范围查找,将javascript css样式更改保持在最低限度(改为改变类),如果你不得不减少浏览器重新渲染,还要批量执行它们,以及许多其他很棒的技巧:)

答案 5 :(得分:0)

根据需要附加和分离事件,不要使用行为。还可以使用setTimeout和setInterval创建线程来加速UI。我这样做是为了防止IU不稳定。