2013-09-02 2 views
1

저는 컴퓨터 과학 배경에서 왔고 제가 가장 익숙한 언어는 Java, C# 및 C++입니다. 이 언어들에서 당신의 기억 공간은 항상 마음의 뒤편에 있으며 사용하지 않는 물건들을 파괴하도록 가르쳐 왔습니다.사용하지 않는 요소를 숨기는 것이 유리합니까?

저는 최근에 웹 개발자로서 인턴 과정을 가졌습니다. 나는 여러 가지 관행에 익숙해지고 잠시 동안하지 못했던 약간의 웹 디자인을하고있다. 적어도 적절하지는 않다. 내 사이트 중 하나에서 화면에 나타나는 몇 가지 이미지가 있고 다시 볼 수 없도록 뷰포트에서 벗어납니다.

이 문제의 요소) (.hide에 도움이 될 것인가? 그만한 가치가있는 메모리 사용 공간을 줄일 수 있습니까? 그것은 발자국을 전혀 줄이려고합니까? 한 동료는 페이지로드시 히트가 찍히기 때문에 가치가 없을 것이라고 말했지만 완전히 확신하지 못했습니다.

요소가 여전히 DOM (문서 객체 모델)에 잎 숨어 코멘트에서 언급 한 바와 같이
+6

요소를 숨기더라도 DOM에서 제거되지는 않습니다. – Pointy

+0

뾰족한 메모로 요소를 숨기더라도 DOM에서 요소가 제거되지 않으므로 거기에서 이길 수는 없지만 화면 밖 요소가 스크롤 성능에 영향을 미칠 수 있습니다. – steveax

+0

그래서 어떤 이익이 있습니까? DOM에서 요소를 제거 할 수있는 방법이 있습니까? – Nanor

답변

1

. 개인적으로 화면에서 벗어난 무언가가있는 경우 필요하지 않은 경우 jQuery .remove() 메서드를 사용하여 DOM에서 실제로 제거 할 수 있습니다. 이미지의 크기와이 이미지의 양에 따라 성능에 차이가 날 수 있습니다. 내가 말한 것처럼

, 내 DOM이 불필요한 혼란없이 깨끗하고 깔끔한로 좋아, 그래서 나는 그들을 제거 할 것이다, 그러나 그것은 나를 그냥.

편집 : 좀 더 그것으로 찾고, DOM에서 요소를 제거하는 것은 그것 (source)와 관련된 메모리를 해제하지 않는 것 같습니다. 메모리가 해제 될 때 DOM 구현에 따라 달라지는 것 같습니다 (source). 노드를 물리적으로 재사용하는 것이 가장 효율적인 방법입니다.

+0

DOM에서 요소를 제거해도 개체를 할당 해제하는 방식으로 메모리가 직접 해제되지 않지만 JavaScript 엔진의 GC가 다음 번에 메모리를 확보 할 수 있습니다 (제거 된 노드에 대한 참조를 남기지 않는 한 누출이있다). – Adam

+0

그래, 그게 내가 말했듯이 GC가 잠재적으로 메모리를 확보 할 수 있다고 언급했지만 아무런 보장이 없다. 그것은 구현에 달려 있습니다. – vimist

0

@Pointy가 답을 (의견으로) 정했습니다. 아니요. 엘리먼트 (그리고 모든 엘리먼트)가 아직 DOM에 있기 때문에 메모리에 남아 있기 때문에 숨기기는 거의하지 않습니다. 스크롤 가능/변환 가능 영역에서 조금 더 빠르게 페인팅을 만들지 만, 단순히 숨기 만하면 앱의 메모리 사용량이 줄어들지는 않습니다.

관련 문제