所以我发现我的应用程序在一些扩展使用后变得缓慢。特别是当我创建很多视图,每个项目都在一个长列表中。我曾经想过,通过view.remove()去除这些视图可以帮助解决问题,但是当它们从页面中移除时,我注意到Chrome的时间轴显示我的DOM节点数量不会减少。我添加的每个视图都会继续增加此计数。事实上,似乎减少此节点计数的唯一一件事情就是刷新页面。骨干删除视图和DOM节点
这感觉不对我,我觉得我搞砸了一些真正的基础,因为这个问题似乎与我的所有意见,并不仅仅是这些的发生。这些查看列表发生得更快,因为它们有很多。
有没有人有什么建议,我应该找什么?什么样的原因会导致这种行为?
我会提供代码,但我不知道会有什么帮助。
TL; DR - View.remove()是从页面移除的观点,但我的DOM节点计数继续走升不下来。
您是否检查过它是否可以在其他浏览器中重现?可能是Chrome浏览器的Web检查器的一个错误。对于少于1200个Dom节点而言,这是完全正确的,当它超出您必须检查哪些视图不显示并立即将其删除时 – Deeptechtons 2012-07-21 05:24:19
您的视图是否倾听任何模型或收集事件?这可能会导致在视图中通过'this.el'和'this。$ el'泄漏。 – 2012-07-21 05:31:45
@Deeptechtons我希望我能够说这是一个Chrome检查器问题,但我很高兴确保最薄弱的环节正坐在这台电脑前。 ;-)注意,我想我应该澄清我的DOM元素正在被删除。像document.getElementsByTagName(“*”)。length这样的东西会导致适当的计数更改,具体取决于我添加还是删除视图。我使用Derick Baileys僵尸删除的想法,并且每个视图都有一个关闭的功能,即成功删除和解除绑定事件。所以我的事件下降了,意见也没有了(至少表面上)。但节点计数仍然存在。 – jmk2142 2012-07-21 05:44:47