4

ajax を介してページに読み込まれる iframe があります。間隔ごとに、新しい 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 スクリプトでの Iframes とメモリ管理は メモリを解放しません

4

1 に答える 1

1

Windows 7 以降の IE での私の経験では、ガベージ コレクションを明示的に強制することはできません。Windows の動的メモリ管理と連携して動作します。システムのメモリが全体的に不足している場合、IE はより頻繁にメモリを解放し始めます。利用可能なメモリがたくさんある場合は、プロセスを強制終了するまで保持されます。

ただし、各ページ (または iframe) が一定量のメモリを消費することは事実であり、IE は移動するときにのみ大量のメモリをアンロードする傾向があります。これは、SPA アプリ (シングル ページ アプリケーション) にとっては好ましくない状況です。そもそもメモリ使用量を低く抑えるために、賢明にコーディングすることがさらに重要になります。

于 2015-06-08T18:15:28.693 に答える