代码之家  ›  专栏  ›  技术社区  ›  Denis Hoctor

如何提高我的网站IE6/7JS性能?

  •  3
  • Denis Hoctor  · 技术社区  · 15 年前

    因此,我最近参与了一个网站重写,我们在各个方面都经历了与前一个网站相比的重大改进(不,这不是完美的,我们在最后期限内生活并且一直在改进:d),但有一个例外:在IE6/7中,页面显示后它将被锁定。我知道这是JS,因为它被禁用了,速度很快,我知道一些事情,比如我们使用的SimpleGallery插件速度很慢,但即使如此,谷歌广告删除了,它仍然在爬行(+8秒)。我查看了Firebug探查器并进行了大量的JS/CSS更改,例如:

    • 将除img错误处理以外的所有js移动到页面底部
    • 改进所有jquery选择器指定的最佳性能
    • 转到jquery 1.4
    • 通过JS lint运行我们的核心定制JS(main.js)
    • spriting常用图像
    • 降低CSS选择器的复杂性

    这样做对所有的浏览器都很好,我知道我可以做的更多,但我没有看到IE6/7的重大改进,这是我需要的。我们确实对IE7使用了dd_roundies_0.0.2a.js,但对IE6不使用。我试过Dynatrace,但看不到任何明显的东西,尽管我在它的深度上有点迷失了。

    A sample listing page

    A sample search page

    有人能看到我在这里可能缺少什么和/或指向一些好的IE分析工具吗?

    编辑:我应该提到我已经通过了yslow、pagespeed和chrome的开发工具。所有这些我都是基于上面提到的大部分改进。在这一点上,我不是说该网站是完全视屏,但它是好的,并朝着正确的方向移动。但是,我在IE6/7中有一个问题,我认为它是JS执行。

    编辑2:我们已经从服务器发送了IE6的chrome帧元标记。这不是一个解决方案,但我认为它对IE6的益处大于弊。我在关注JS的特别反馈,因为我认为我已经涵盖了所有其他的基础。

    6 回复  |  直到 15 年前
        1
  •  1
  •   Sean Hogan    14 年前

    您可以在IE6中手动分析“common.js”脚本。 只需在战略地点抓取一个新的时间戳,并在最后提醒他们。

    例如

    function ts() { return (new Date).getTime(); }
    var t0 = ts();
    // some of your code
    var t1 = ts();
    // rest of your code
    var t2 = t();
    alert(t1-t0); // milliseconds between t0 and t1
    alert(t2-t0); // ms between t0 and t2
    

    也许脚本的一部分比其他部分慢得多。
    或者可能只是IE6。

        2
  •  1
  •   Rowno    15 年前

    您包括来自的jquery http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.js 如果你把它放在你的网站上,下载速度会更快。

    另外,签出 YSlow Firebug插件,它提供了很多关于如何改进站点加载时间的信息。

        3
  •  0
  •   RHicke    15 年前

    如果你想强烈要求你的用户安装Google Chrome框架,它会让IE使用Chrome渲染器和JavaScript引擎。

    http://code.google.com/chrome/chromeframe/

        4
  •  0
  •   Egon    14 年前

    目前唯一可疑的是“omniture.js”。

    这是我找到的一篇关于 omniture.js and IE6 .

    你可以使用 SpeedTracer 在Chrome上调试速度问题。当然,JS速度将根据V8发动机而定。

        5
  •  0
  •   fdsggfdsafs    14 年前

    Javascript本身往往不是问题所在,当您修改DOM时,就会遇到麻烦,例如设置动画、添加和删除元素。要特别注意不透明性。

        6
  •  0
  •   Kevin Hakanson    14 年前

    看一看 LABjs & RequireJS: Loading JavaScript Resources the Fun Way 它讨论了如何并行加载脚本。

    直到最新一代 浏览器,标签上有 表现真的不好 它的特点。即, 标记__block_,表示它们 停止一切其他的事情 在页面上加载/发生,而 它们加载并执行。不是 只有它们能阻止 这一页,他们甚至曾经停止 加载任何其他标记。