4

我有一个 iframe,它通过 ajax 加载到我的页面中。在每个间隔上,一个新的 iframe 都会覆盖旧的 iframe。出于某种原因,iframe 内容在 IE7 中保留在我的记忆中。我确定它是 iframe 内容,因为当我将一个小站点加载到 iframe 中时,内存大小会缓慢增加。当我将大型网站加载到框架中时,每次刷新都会更快。

每次调用间隔时,我都想从内存中清除 iframe 内容。我尝试了下面的脚本(这个是针对 window.onunload 的——我也在每个间隔都尝试过),但两者都不起作用,并且将 iframe 内容保留在我的内存中,直到我结束浏览器会话。

// Remove iframecontents
window.onunload = function() {
    $('iframe').each(function(i, frame) {
        frameDoc = frame.contentDocument || frame.contentWindow.document;
        frameDoc.removeChild(frameDoc.documentElement);
    });
}

// Remove iframe with jQuery
window.onunload = function() {
    $('iframe').each(function(i, frame) {
        $(frame).remove();
    });
}

如果有什么方法可以从我的内存中删除 iframe 中的内容而无需重新启动浏览器?

这些解决方案似乎也不起作用: Javascript jQuery DOMWindow 脚本中的 iframe 和内存管理不会释放内存

4

1 回答 1

1

自 Windows 7 以来,我对 IE 的体验一直是您不能明确强制它进行垃圾收集。它与 Windows 动态内存管理一起工作。如果您的系统整体内存不足,那么 IE 将开始更频繁地释放内存。如果您有很多可用内存,它将一直保留到您终止该进程为止。

然而,每个页面(或 iframe)确实会占用一定数量的内存,而 IE 往往只有在您离开时才会卸载其中的一大块。这对于 SPA 应用程序(单页应用程序)来说是一种糟糕的情况。这使得明智地编码以首先保持低内存使用变得更加重要。

于 2015-06-08T18:15:28.693 回答