【问题标题】:DOM memory and CPU managementDOM 内存和 CPU 管理
【发布时间】:2009-03-14 15:29:03
【问题描述】:

我正在创建一个逐步构建的单页(如果启用了 Javascript)“博客”,它使用 AJAX 为用户导航到的新页面请求 HTML。

当用户导航到新页面时,它们将在一个带有“溢出:隐藏;”的小窗口中一个接一个地添加到 DOM 中:

<div id="foo" style="width:200px; height:100px;">
  <div id="bar" style="width:999999px">
  </div>
</div>

当 AJAX 调用返回成功时,将在 #bar 中附加一个 div。

#foo 宽度之外有很多隐藏页面会如何影响浏览器?

当用户离开它们时,我是否需要从 DOM 中删除 div?然后,如果用户选择再次导航到它们,我将需要发出新的 AJAX 请求。 :(

谢谢

威廉

【问题讨论】:

    标签: javascript dom elements


    【解决方案1】:

    无论人们说 GC 能为您做什么,无论是在 JavaScript、C# 还是 Java 中,请注意并忘记自动管理的愚蠢承诺。明确地清理它并睡个好觉。

    非常简单的原因:当您脱离大多数简单的场景(浏览器的 JavaScript 和 C#/java 都是这种情况)时,闭包泄漏和泄漏非常糟糕。

    【讨论】:

    • 请定义 GC。作为一个初学者开发人员,我也很难理解你所说的闭包是什么意思。谢谢
    • GC、垃圾收集器、浏览器的一部分、运行时和偶尔的操作系统虚拟内存管理器。为了理解闭包,深入了解函数式风格和 lambda 以及一些委托的用法很重要。 en.wikipedia.org/wiki/Closure_(computer_science).Be 明确和清理,这是值得的。
    • 去掉 ".Be" 部分(stackoverflow 上的标记解释器有经典问题).. 只是谷歌在喜欢的语言中的特定闭包用法,无论是 JS、C# 还是 Java。
    【解决方案2】:

    现代浏览器布局引擎通常足够智能,不会处理隐藏的元素,因此不会占用太多 CPU 资源。但是,在某些浏览器中添加大量具有高度复杂对象图的节点可能会很昂贵,所以我会小心这一点。另请注意,即使它们没有布局,它们仍然作为 DOM 的一部分存在,如果这些节点很大,内存使用可能会成为一个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-28
      • 2016-10-12
      • 1970-01-01
      • 2013-02-14
      • 2021-01-23
      • 2013-01-17
      • 2011-02-18
      • 2011-07-01
      相关资源
      最近更新 更多