-
[프론트] 브라우저 렌더링 파이프라인에 대해서 설명하세요.매일메일 2025. 4. 29. 14:45728x90
이 과정은 크게 6단계로 나눠진다.
#1. DOM 생성
#2. CSSOM 생성
브라우저는 CSS 파일을 파싱한다. CSS파일 역시 byte로 전송되므로, 브라우저는 이를 문자로 변환한 뒤 CSS규칙으로 나눈다. 각 CSS규칙은 선택자와 선언으로 구성되는데 선택자는 스타일을 적용할 HTML 요소를 정의하고, 선언은 적용할 스타일을 적용한다.
#3. 렌더 트리 생성
브라우저는 DOM과 CSSOM을 결합하여 렌더 트리를 생성한다. 렌더 트리는 화면에 실제로 표시될 요소들로만 구성된다. 예를 들어 display: none 속성이 있는 요소는 렌더 트리에 포함되지 않는다. 이는 렌더 트리가 실제로 화면에 그려질 요소들만을 포함히기 때문이다. 렌더 트리의 각 노드는 DOM 트리의 요소와 연결되며, CSSOM 트리에서 해당 요소에 적용된 스타일 정보를 포함한다. 즉, 렌더 트리는 HTML 문서의 구조와 각 요소의 스타일 정보를 모두 포함한 트리이다.
#4. 레이아웃
렌더 트리가 생성된 후, 브라우저는 이 트리를 사용해 각 요소의 정확한 위치와 크기를 계산한다. 이 과정이 바로 레이아웃(Layout)입니다. 레이아웃 과정에서는 렌더 트리의 각 노드가 화면의 어디에 위치할지, 그리고 얼마나 큰지를 계산하게 된다. 이 계산은 화면의 뷰포트(viewport) 크기와 같은 정보에 의존한다. 만약, 화면 크기가 변경되면 브라우저는 레이아웃 과정을 다시 수행해야 한다. 이 과정을 흔히 '리플로우(Reflow)'라고 부르는데, 리플로우는 성능에 영향을 줄 수 있으므로 이를 최소화하는 것이 중요하다.
#5. 페인팅
레이아웃이 완료되면, 브라우저는 각 요소를 실제로 화면에 그리는 작업을 시작한다. 이 과정을 페인팅이라고 한다. 페인팅 단계에서는 텍스트, 색상, 그림자, 이미지 등 모든 시각적 요소가 화면에 그려진다. 페인팅은 화면에 표시될 그래픽 요소를 생성하는 과정이기 때문에, 이 과정도 성능에 큰 영향을 줄 수 있다. 특히, 복잡한 그래픽이나 애니메이션이 포함된 경우 페인트 작업이 많아져 성능이 저하될 수 있다.
#6. 컴포지팅
브라우저는 화면에 그려질 요소들을 각각의 레이어(layer)로 분리하고, 이 레이어들을 결합하여 최종 화면을 구성합니다. 이 과정에서는 GPU를 활용하여 각 레이어를 빠르게 합성한다. transform과 opacity와 같은 속성은 레이아웃이나 페인트 과정을 거치지 않고, 이 컴포지팅 단계에서만 처리된다. 이 덕분에 이러한 속성을 사용하는 애니메이션은 더 부드럽고 빠르게 실행될 수 있다. 컴포지팅 단계는 GPU 가속을 활용하여 성능을 최적화하고, 화면에 최종적으로 표시되는 결과를 빠르게 생성하는 데 중요한 역할을 한다.
'매일메일' 카테고리의 다른 글
[프론트]인터넷 창에 www.google.com를 입력하면 무슨 일이 일어나는지 설명해주세요. (0) 2025.04.29 [백엔드] 자바에서 객체를 복사하는 방법에는 어떤 종류가 있는지?? (0) 2025.04.29 [백엔드]트랜잭션 격리수준은 무엇인가요? (0) 2025.04.26 데이터베이스 인덱스에 대해 설명하기 (0) 2025.04.26