작성
·
352
0
안녕하세요 강사님! 우선 좋은 강의 감사드립니다 :)
열심히 보고 있습니다 ㅎㅎ..
브라우저 렌더링 관련되어 의문이 생겨 질문을 남겨보니 시간 여유있으실 때 답변해주시면 좋겠습니다.
짧게 브라우저 렌더링 관련하여 공부를 하고 인강을 들으면서 다시 복기를 하였을 때 렌더레이어라는 말을 처음 들어보는 것 같아 추가적으로 정보를 찾아보려고 browser render layer 와 같은 키워드를 찾아보았습니다.
[Naver D2 - 하드웨어 가속에 대한 이해와 적용] 글을 발견하였고 아래와 같은 설명이 있었습니다.
DOM 트리: HTML 웹 페이지를 파싱한 트리로, HTML 문서의 각 요소를 쉽게 처리(추가, 삭제 등)하기 위하여 브라우저의 엔진이 사용하는 트리다.
RenderObject 트리: DOM 트리로부터 만들어지는 트리로, DOM 트리의 노드 가운데 실제 화면에 표현되는 노드만으로 구성된 트리다.
RenderLayer: 브라우저의 엔진이 하드웨어 가속 등을 처리하기 위해 사용하는 논리적인 레이어로, 각 RenderObject의 속성에 따라 RenderLayer에 할당된다.
GraphicsLayer: 하드웨어 가속 처리를 위한 물리적인 레이어로, 레이어별 RenderObject를 GraphicsLayer 단위로 렌더링한 뒤 최종적으로 GPU를 통해 합성된다.
그리고 PDF 기준 150~151번째 페이지에 아래와 같은 코멘트가 있습니다.
Q. 렌더객체와 렌더레이어는 1:1 대응일까요?
- NO : display:none으로 사라지는 노드들이 있을 수 있기 때문입니다.
하지만 DOM 트리와 렌더트리는 1:1대응이 됩니다. 이렇게 렌더트리가 생성된 후..
제가 이해한 바로는 위 D2에서 이야기하는 RenderObject Tree 를 렌더트리라고 명명 하신 것 같습니다.(아니면 저의 이해력부족인 것 같습니다 🥲)
DOM트리에서 렌더트리(RenderObject Tree)를 생성할때 이미 font-size의 상속 및 display:none에 해당하는 DOM 객체에 대한 수정이 이루어지고 그렇게 된다면 1:1 대응이 되지 않는것이 맞는 것 같다는 생각이 들어 문의를 드립니다!
그렇다면 DOM트리와 렌더트리(Render Object Tree) 렌더레이어(Render Layer) 그 어느것도 1:1대응이 되지 않는 것이 아닐까요?
질문 끝까지 읽어주셔서 감사합니다 :)
답변 기다리고 있겠습니다!
답변 2
1
1
안녕하세요 Lee님 ㅎㅎ
제가 이해한 바로는 위 D2에서 이야기하는 RenderObject Tree 를 렌더트리라고 명명 하신 것 같습니다.(아니면 저의 이해력부족인 것 같습니다 🥲)
>> 네 맞습니다. 렌더오브젝트트리 = 렌더트리입니다.
DOM트리에서 렌더트리(RenderObject Tree)를 생성할때 이미 font-size의 상속 및 display:none에 해당하는 DOM 객체에 대한 수정이 이루어지고 그렇게 된다면 1:1 대응이 되지 않는것이 맞는 것 같다는 생각이 들어 문의를 드립니다!
>> 네 맞습니다. 해당 부분은 오타입니다. ㅠㅠ 찾아주셔서 감사합니다. 렌더트리가 아니라 렌더객체입니다.
그렇다면 DOM트리와 렌더트리(Render Object Tree) 렌더레이어(Render Layer) 그 어느것도 1:1대응이 되지 않는 것이 아닐까요?
>> 네 맞습니다. 다만, DOM트리와 렌더객체는 1:1 대응이 됩니다. 다만 오해의 소지가 있습니다. 렌더 객체가 렌더트리로 변환될때 또는 DOM트리에서 렌더객체로 변환될 때로 갈려서 이해가 될 수 있기 때문에 해당 부분은 빼도록 하겠습니다.
해당부분은 다음과 같이 변경되었습니다. 추후 교안은 수정되어 올라갈 예정입니다.
Q. 자주 묻는 면접질문 : 렌더트리와 DOM트리는 1:1 대응일까요?
아닙니다. DOM트리 > 렌더객체 > 렌더트리가 되는 과정에서 display:none으로 사라지는 렌더 객체(노드)들이 있을 수 있기 때문에 1 : 1 대응이 아닙니다.
저의 틀린 부분을 찾아주셔서 감사합니다.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제가 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
네 답변확인했습니다 :) 친절한 답변 감사합니다!