Javascript 如何提高我的站点IE6/7 JS性能?
因此,我最近参与了一个站点重写,我们在各个方面都比以前有了很大的改进(不,这并不完美,我们按照截止日期生活,并且一直在改进:D)但有一个例外:在IE6/7中,页面显示后它将锁定。我知道这是JS,因为它被禁用了,速度很快,我知道我们使用的simplegallery插件非常慢,但即使这样,谷歌广告被删除了,它仍然处于爬行状态(+8秒)。我已经浏览了Firebug profiler并进行了大量的JS/CSS更改,例如:Javascript 如何提高我的站点IE6/7 JS性能?,javascript,jquery,performance,internet-explorer,Javascript,Jquery,Performance,Internet Explorer,因此,我最近参与了一个站点重写,我们在各个方面都比以前有了很大的改进(不,这并不完美,我们按照截止日期生活,并且一直在改进:D)但有一个例外:在IE6/7中,页面显示后它将锁定。我知道这是JS,因为它被禁用了,速度很快,我知道我们使用的simplegallery插件非常慢,但即使这样,谷歌广告被删除了,它仍然处于爬行状态(+8秒)。我已经浏览了Firebug profiler并进行了大量的JS/CSS更改,例如: 将除img错误处理之外的所有JS移到页面底部 改进所有jQuery选择器以获得最
- 将除img错误处理之外的所有JS移到页面底部
- 改进所有jQuery选择器以获得最佳性能
- 移动到jQuery1.4
- 通过JS Lint运行我们的核心定制JS(main.JS)
- spring常用图像
- 降低CSS选择器的复杂性
编辑2:我们已经从服务器发送了IE6的Chrome框架元标记。这不是一个解决方案,但我认为它对IE6的好处大于坏处。现在我正在寻找JS的特定反馈,因为我想我已经涵盖了所有其他基础。如果您将jquery从中包括进来,那么如果您将它放在您的网站上,它的下载速度会更快
另外,请查看Firebug的插件,它会为您提供大量信息,说明您可以做些什么来缩短站点的加载时间。如果您想让用户安装Google Chrome框架,它将使IE使用Chrome渲染器和javascript引擎
您可以在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 目前唯一可疑的是“omniture.js” 这是我找到的一篇关于的博客文章
您可以在Chrome上使用来调试速度问题。当然,js的速度将取决于V8引擎。javascript本身通常不是问题所在,而是当您修改DOM时,您最终会遇到麻烦,例如设置动画、添加和删除元素。要特别注意不透明度。看一看关于如何并行加载脚本的内容 直到最新一代的 在浏览器中,标签有一些 真的很糟糕 它的特点。即, 标记“block”,意思是 停止所有其他正在进行的工作 在页面上加载/发生,而 它们在执行时加载和修改。不 只有它们才能阻止地球的所有其他部分 页面,他们甚至用来停止 加载任何其他标签
谢谢你的意见。已通过YSlow很多,页面速度(将提到上面)。至于jQuery,我更喜欢它在google上,因为它更有可能被用户缓存。另外,我不确定下载速度是否是问题所在,我认为更多的是JS执行。改用(1.4.0而不是1.4)会稍微快一点,因为客户端可以缓存它,但您必须更新新1.4.*版本的url。谢谢Kimble。但是你认为这个url有什么问题?当我检查标题时,它是Cache-Control:public,必须重新验证,代理重新验证,max-age=3600,12天后过期。我错过了什么吗?“如果你把它放在你的网站上,下载速度会更快”——最好是跨域传播——现代浏览器一次下载的东西不会超过两个。整个镀铬框架毫无意义。让用户使用Chrome(或任何其他像样的网络浏览器)。Chrome Frame绝对不是一个解决方案,因为Corports和backward IT管理员(不是粗鲁,但IT人员仍然想要IE6,他一定是个白痴或太懒了,对吧?)不会允许。也就是说,我们已经有条件地为IE6发送了少量的数据!很抱歉,99%都是笑话。我觉得你是我公司最大的客户,只使用IE6。你唯一能做的就是优化,因为IE6的javascript引擎很弱。如果您需要删除昂贵的功能,请执行此操作并告诉他们原因。另外,使用chromes profiler告诉您是否经常调用您的任何函数,这对我来说是最有效的。您可以使用IE6的一些可用漏洞,自己安装chromeframe。或者建议那些管理员使用install方法……只有在代码验证的情况下才应该使用XHTML;目前,您在两个文档中都有60多个错误;如果有人真的将其解析为XHTML而不是标记soup,那么他只会得到一条错误消息!