更好的性能,空元素或使用Javascript创建和销毁?

时间:2010-12-05 21:37:38

标签: javascript jquery html performance

对于性能更好,在页面上有许多隐藏元素,或创建它们并根据需要使用javascript来销毁它们。例如,单击某些内容时,首先会创建该元素,然后显示该元素。当它关闭时,它会被销毁。这会比隐藏在页面中的隐藏元素更好吗?

4 个答案:

答案 0 :(得分:5)

我认为这部分取决于元素的复杂程度,部分取决于“性能”的含义。元素越复杂,创建它的代码就越多,创建的时间就越长。因此,将元素隐藏在页面中可能会使显示更快,但代价是更大的页面(以及更多的DOM筛选),这可能会使整体速度降低。

答案 1 :(得分:3)

您通常会获得最佳的点击性能,只显示/隐藏元素,但这是以较大的初始页面加载为代价的。如果你正在使用jQuery,你也可以使用detach()从DOM图中删除一个元素而不会破坏它,所以你可以在别处重新附加它,这比destroy / create便宜。

一般来说,按性能顺序从最佳到最差:

  1. 显示现有的隐藏元素
  2. innerHTML from array + join
  3. 来自字符串连接的innerHTML
  4. 分离+附加现有DOM节点
  5. 克隆DOM节点
  6. 创建新的DOM节点
  7. 如果您需要动态生成复杂内容,您可以查看一个Javascript模板工具,如handlebars.js - 它可以让您定义模板,然后从这些模板创建标记+一些传入您的对象然后可以通过innerHTML进行分配。它提供了一种非常快速且非常有效的方式来管理动态客户端内容。

答案 2 :(得分:1)

创建和销毁DOM元素是您在JavaScript中可以做的最慢的操作,尤其是在IE中。拥有许多隐藏元素将占用更多内存,最初可能需要更长时间才能加载,但可以将其视为缓存:您将缓存这些元素供以后使用,并在需要时重新使用它们,而不是创建它们并在飞行中摧毁它们。

但是,如果你不是在大规模(数百/数千个元素)上这样做,那可能无关紧要。创建或销毁单个DOM元素所需的时间可以忽略不计,因此如果是这种情况,请为您做更多的事情。

答案 3 :(得分:1)

恕我直言,你应该做另一种考虑,因为显然页面加载速度受其大小的影响,以kb为单位。

  • 如何计算网页尺寸?

    • HTML文档文件大小(DOM元素);
    • 文件大小图形 - 包括任何背景图像;
    • 包含任何内容(JavaScript(.js),外部表格 (.css),SSI,PHP文件等)文件大小;
    • 预载数据的文件大小,如图像;
    • 任何多媒体内容的大小,如声音, 嵌入在网页中的视频,Flash文件等;

  • 最大尺寸是多少?

    • 每个网页不得超过 50kb 。这将保证网页在几秒钟内加载。
    • iPhone不会缓存大于 25K 的组件。

所以,你的问题是没有正确的dom元素数量,你在隐藏元素数量之前有很多事情要做! ;)希望这个帮助


参考:

工具

相关问题