在我的公司,我们正在开发一个包含多个iframe的SPA。有时一些帧不会加载到IE 11上,因为IE内存不足(内存中的iframe内容可能非常繁重,但Chrome和FF上的内容都没问题)。
事实上,我们监控的事实是,每次重新加载页面时,使用的内存(从IE内存分析器或Windows任务管理器获取的数据)都会持续增加,直到达到1.6Gb的阈值。
我发现了very interesting post,我认为我所有的烦恼都会消失。由于我们没有使用jQuery,我将这个提供的片段改编为vanilla JS。 我的想法是在页面重新加载之前清除帧以检查是否将回收使用的内存。
这是我写的代码:
window.addEventListener('beforeunload', function () {
[].slice.call(document.querySelectorAll('iframe')).forEach(function (frame) {
// remove all frame children
while (frame.contentWindow.document.body.firstChild) {
frame.contentWindow.document.body.removeChild(frame.contentWindow.document.body.firstChild);
}
frame.src = 'about:blank';
frame.parentNode.removeChild(frame);
});
// force garbarge collection for IE only
window.CollectGarbage && window.CollectGarbage();
});
然后我打开了IE的内存分析器并重新加载了应用程序。然而,回收的内存很少,我最终得到了类似memory diagram
的内容我错过了什么。有一些信息或建议吗?
谢谢。