최근 프로젝트 개발에 참여했으며 프로젝트는 브라우저 기반 Fat Client (RIA) 응용 프로그램이므로 페이지에 많은 iframes가 있습니다. 나중에 테스트에 따르면 브라우저 메모리가 항상 높았으며 Iframe 페이지가 더 많이 열리면 메모리 사용량이 클수록 IE 시리즈 브라우저에서 특히 명백합니다. 모든 열린 iframe 페이지가 닫혀 있어도 메모리 사용량이 크게 줄어들지 않았습니다. 메모리 사용량이 약 400m에 도달하면 IE 브라우저가 매우 고착됩니다. 분석에 따르면 IFRAME이 출시되지 않았으므로 모든 닫힌 IFRAME가 차지하는 메모리가 출시되었습니다. 완전히 릴리스 할 수는 없지만 IFRAME 메모리 사용량은 계속 커지지 않으며 전체 응용 프로그램의 메모리 사용량은 약 150m로 제어됩니다.
/** * 동적으로 iframe을 만듭니다 * @param dom iframe 컨테이너를 만듭니다. 즉, Dom에서 iframe을 만듭니다. DOM은 DIV, SPAN 또는 기타 태그가 될 수 있습니다. * @param src 웹 페이지 경로는 iframe* @param onload에서 열렸습니다.이 이벤트는 iframe이로드 된 후 트리거됩니다.* @return 생성 iframe 객체를 반환 할 수 있습니다*/function createiframe (dom, src, onload) {// 문서에서 iframe 생성 iframe.createelement ( "iframe"); // iframe iframe.style.width = '100%'의 스타일을 설정합니다. iframe.style.height = '100%'; iframe.style.margin = '0'; iframe.style.padding = '0'; iframe.style.overflow = 'Hidden'; iframe.style.border = 'none'; // iframe if (onload && object.prototype.call (onload) === '[Object function]') {if (iframe.attachevent) {iframe.attachevent ( 'onload', onload); } else if (iframe.adeventListener) {iframe.adeventListener ( 'load', onload); } else {iframe.onload = onload; }} iframe.src = src; // iframe을 dom.appendChild (iframe)에로드합니다. 반환 iframe; } /*** iframe을 파괴하고 iframe이 점유 한 메모리를 해제하십시오. * @param iframe 파괴 해야하는 iframe 객체*/function destroyiframe (iframe) {// iframe을 빈 페이지로 가리켜 대부분의 메모리를 확보 할 수 있습니다. iframe.src = '정보 : blank'; {iframe.contentWindow.document.write ( ''); iframe.contentWindow.document.clear (); } catch (e) {} // 페이지에서 iframe을 제거합니다. iframe.parentNode.removeChild (iframe); }