【问题标题】:Why this page is so SLOW on Firefox? [closed]为什么这个页面在 Firefox 上这么慢? [关闭]
【发布时间】:2011-05-24 13:11:23
【问题描述】:

This 是我的意思的页面。尝试点击链接(添加边/曲目,删除),您可以看到我自己添加/删除一些输入文本。

  1. 使用 Chrome:没问题;
  2. 使用 IE (7):没问题;
  3. 用火狐(4):天啊,整个界面很慢。

Javascript/jQuery 代码(如您所见)真的很短,没有什么比这更复杂的了。 为什么会有这种行为?

【问题讨论】:

  • 对我来说不慢,尝试禁用扩展程序
  • 在 Linux 上的 Firefox 3.6 上没问题。
  • 升级到 jQuery 1.6.1(最新)而不是使用 1.5.x 会提高速度......但这一切都取决于浏览器中的脚本引擎,请记住,FF 做了很多事情后面有更多的东西(我们不需要)。 Chrome 和 Safari 是最快的。
  • 我在 FF 4.0.1 上试过,很好……你使用的是哪个版本
  • 刚刚在 Firefox 4 和 Chrome 中测试了该页面,并没有发现任何区别(它们都同样快)。

标签: javascript jquery html firefox google-chrome


【解决方案1】:

我为 Firebug 插件尝试了 YSlow 插件。我突然想到的一件事是:

F 级关于减少 DOM 元素的数量

页面上有3203个DOM元素

复杂的页面意味着要下载更多字节,这也意味着 JavaScript 中的 DOM 访问速度较慢。减少页面上的 DOM 元素数量以提高性能。

阅读更多:http://developer.yahoo.com/performance/rules.html#min_dom

也许在页面加载后在 javascript 中构建 DOM 元素会有所帮助。

【讨论】:

    【解决方案2】:

    分析表明克隆真的很慢。您是否尝试过使用固定的 DOM 字符串(而不是使用 .clone())手动创建元素并使用委托进行事件处理?在任何浏览器中,这可能会大大提高整体性能。

    编辑:手动,我的意思是:

    var newElem = $('<div class="trackOn">...</div>');
    

    那么对于事件:

    tracklistOnElem.delegate('.trackBotton .addSide', 'click', function() { addSide(this); return false; });
    tracklistOnElem.delegate('.trackBotton .addTrack', 'click', function() { addTrack(this); return false; });
    

    等等

    编辑#2:阅读文档总是有回报的,这里也是:http://api.jquery.com/clone/ 说在 jQuery 1.5.0 中,复制事件和数据的默认设置被错误地设置为 true。在 1.5.1 和朋友们又回到了false,所以尝试使用 jQuery 1.6.0 或 1.5.2。这可能也会有所帮助。您还可以修改 clone() 调用以手动指定 false 作为第一个也是唯一的参数,以避免再次发生这种情况。

    【讨论】:

    • 是的,但这很荒谬,单个 clone() 的性能如此之慢。出事了……
    • “手动创建带有固定 DOM 字符串的元素”是什么意思?我克隆的单个 HTML 元素大约是 50-60 行,很难将它放在一个字符串中:(
    • 它必须克隆所有后代元素,并且您在每一行中都有那些大选择,因此它们会使它们变慢(因为它必须检查每个元素上的事件等)。真的,尝试创建一个静态字符串并从中重新生成 DOM,它会快很多。
    • 没有什么能阻止您使用变量和 for 循环将所有这些
    • 试过了,jQuery 1.6.1 没有任何改变。老实说,是的,我应该将您的提示用于加载元素,而无需克隆。但这不是我的脚本的错(真的,它太慢了)。我在 Firefox 上看到页面/等的其余部分真的很慢。例如,只需将该页面从顶部滚动到按钮,它就会捕捉到:O 我认为这是与此版本的兼容性问题。我会尝试一个旧的......
    猜你喜欢
    • 2011-06-02
    • 2020-09-09
    • 2014-05-17
    • 2011-10-10
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多