我们使用 KnockoutJS 构建复杂的企业应用程序,在 IE8 中性能很差。 应用程序可能会占用超过1GB的内存,并且永远不会释放内存。 在调查过程中,我们发现 KnockoutJS 保留对 DOM 节点的引用并且从未删除它们。可以通过在任何公共 KnockoutJS 示例上使用 IESieve 来重现此问题,只需在添加和删除 DOM 节点时观察 DOM 利用率即可。
有人遇到这个问题并有任何解决方法吗?
我们使用 KnockoutJS 构建复杂的企业应用程序,在 IE8 中性能很差。 应用程序可能会占用超过1GB的内存,并且永远不会释放内存。 在调查过程中,我们发现 KnockoutJS 保留对 DOM 节点的引用并且从未删除它们。可以通过在任何公共 KnockoutJS 示例上使用 IESieve 来重现此问题,只需在添加和删除 DOM 节点时观察 DOM 利用率即可。
有人遇到这个问题并有任何解决方法吗?
可能与事件绑定有关,当它们的DOM元素被删除时没有被释放。如果这是发生在knockout内部的事情,您将不得不修补并提交一个pull请求。
我也经常遇到这种问题,使用backbonejs也是如此。JavascriptMVC在清理自己方面要好一些。