我目前正在构建一个单页主干应用程序,该应用程序在单个页面上嵌入了多达 10 个单独的 Soundcloud iFrame。然后,用户可以查看其他页面,每个页面都包含自己的 iFrame 集。
我注意到每次加载一组新的 iframe 时,选项卡的内存消耗都会增加大约 80-100MB(根据 Chrome 任务管理器)。这个内存永远不会被放弃,所以在点击几下之后,标签很容易达到 300MB 并且变得非常慢。这种缓慢出现在 Chrome 20 和 Firefox 13 中。
每次页面更改后,我都尝试了 .remove()'ing 所有 iframe 以及通过 .html('') 清除容器元素,并且都没有阻止内存增长。
本要点中提供的示例代码表现出与上述相同的行为。在每次加载时,单个 iFrame 会消耗大约 10MB 的额外内存。 https://gist.github.com/3202151
Soundcloud 嵌入代码是否在做一些事情来维护 iframe 的句柄并防止它被 GC 处理?有没有另一种方法可以从 DOM 中删除元素以避免内存膨胀?
注意:我不能将所有曲目添加到可以加载一次的单个集合中,因为嵌入的曲目不是我自己的。