不从HTML中删除不可见的元素是不是很糟糕?

时间:2011-05-18 04:37:35

标签: javascript jquery performance slideshow

我使用JQuery进行了幻灯片放映,目前只使用append()<img>添加到之前定义的容器中。幻灯片显示自动旋转,在最终幻灯片后返回开始并无限延续。

目前,我根本不删除容器中的上一张图片。我没有注意到性能或内存填满方面的任何变化 - 如果我要继续添加元素而不删除旧元素,那么我在Flash中习惯这种行为。

是否有必要删除旧图像,或者这些图像永远不会导致性能问题?

4 个答案:

答案 0 :(得分:2)

最有可能的是,随着时间的推移会影响性能,添加的照片越多,性能就越差,但如果可能的话,测试一下,尽可能多地添加,但如果没有那么多在您的网站上进行,您可能看不到任何性能问题。如果您没有看到任何问题,请不要担心。就像我说的那样,尝试一下。

答案 1 :(得分:2)

其中一些可能依赖于浏览器,但总的来说,我会说是的,不清理旧元素确实是“坏”。无论元素是否可见,它仍然在DOM的结构中添加节点,并且无法无限地添加到DOM。

除非浏览器实现某种智能修剪算法,以便交换DOM中未使用/不可见的部分,但我从未听说过在实践中这样做的事情。

答案 2 :(得分:0)

在附加图片之前不应添加$(div).innerHTML=''清除div中的所有内容吗?

答案 3 :(得分:0)

浏览器缓存所有已加载的图像。每个图像都消耗内存,但删除图像不会影响缓存。如果缓存开始出现问题,浏览器将开始释放内存。每个浏览器都有不同的做法,有些浏览器比其他浏在当前页面的可视空间中不可见的任何图像都是公平游戏。如果当前页面上的图像被抛出并随后在页面的可视区域中显示,则会重新加载。

总之,删除旧图像不会影响性能。