如何改进我的网站IE6 / 7 JS性能?

时间:2010-01-23 01:04:19

标签: javascript jquery performance internet-explorer

所以我最近参与了一次网站重写,我们已经开始接受以前各方面的重大改进(不是不完美,我们按截止日期生活,并且总是在改进:D),但有一个例外:在IE6 / 7中,它会在页面显示后锁定。我知道它是JS,因为它禁用它很快,我知道一些像我们使用的simplegallery插件非常慢,但即使这样,谷歌广告删除它仍然在爬行(+ 8秒)。我查看了Firebug探查器并进行了大量的JS / CSS更改,例如:

  • 将除img错误处理之外的所有JS移至页面底部
  • 改进所有jQuery选择器以指定最佳性能
  • 转到jQuery 1.4
  • 通过JS Lint
  • 运行我们的核心自定义JS(main.js)
  • Spriting常用图片
  • 降低CSS选择器的复杂性

这样做对所有浏览器都有好处,我知道我可以做得更多,但我没有看到我需要的IE6 / 7的重大改进。我们确实将DD_roundies_0.0.2a.js用于IE7,但不用于IE6。我尝试了DynaTrace,但看不到任何明显的东西,虽然我的深度有点迷失。

A sample listing page

A sample search page

有人能看到我在这里可能缺少的东西和/或指向一些优秀的IE分析工具吗?

编辑:我应该提到我已经通过YSlow,PageSpeed和Chrome的开发者工具了。以上所有这些都是我上面提到的大部分改进的基础。在这一点上,我并不是说这个网站是完全光学化的,但它没关系,正朝着正确的方向前进。但是我在IE6 / 7中遇到了一个问题,我认为它是JS执行。

编辑2:我们已经从服务器发送了IE6的Chrome Frame元标记。这不是一个解决方案,但我认为它比IE6更有益处。我现在正在接受JS特定的反馈,因为我认为我已经涵盖了所有其他基础。

6 个答案:

答案 0 :(得分:1)

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

另外,请查看Firebug的YSlow插件,它会为您提供大量有关如何改善网站加载时间的信息。

答案 1 :(得分:1)

您可以在IE6中手动配置“common.js”脚本。 只需在战略位置获取新的时间戳,并在最后提醒他们。

e.g。

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 :(得分:0)

如果你想强迫用户安装谷歌Chrome浏览器框架,它将使IE使用chrome渲染器和javascript引擎

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

答案 3 :(得分:0)

目前只有可疑的东西是“omniture.js”。

以下是我发现的关于omniture.js and IE6的博文。

您可以在Chrome上使用SpeedTracer来调试速度问题。当然js速度将根据V8引擎。

答案 4 :(得分:0)

javascript本身通常不是问题,当你修改最终遇到麻烦的DOM时,例如动画,添加和删除元素。不透明度要格外小心。

答案 5 :(得分:0)

查看LABjs & RequireJS: Loading JavaScript Resources the Fun Way,其中讨论了如何并行加载脚本。

  

直到最新一代   浏览器,标签有一些   真的不利的表现   它的特点。也就是说,    标签“阻止”,意思是他们   呼吁停止其他一切   加载/发生在页面上,而   他们加载并执行时。不   只有他们停止了所有其他部分   在页面上,他们甚至习惯停止了   加载任何其他标签。