# [[브라우저 렌더링 과정 (Critical Rendering Path)]] ## 📌 Brief Summary 브라우저 렌더링 과정(Critical Rendering Path)은 브라우저가 수신한 HTML, CSS, JavaScript 코드를 화면의 실제 픽셀로 변환하기 위해 거치는 일련의 순차적인 단계를 의미합니다 [1, 2]. 이 과정은 DOM과 CSSOM의 생성, 렌더 트리(Render Tree) 구축, 기하학적 형태를 계산하는 레이아웃(Layout), 그리고 픽셀을 그리는 페인트(Paint) 및 합성(Composite) 단계로 이루어집니다 [3, 4]. 렌더링 경로를 최적화하여 렌더링 차단 요소를 최소화하는 것은 웹 페이지의 초기 렌더링 속도를 높이고 사용자 경험(UX)을 향상시키는 프론트엔드 성능 최적화의 핵심입니다 [1, 5, 6]. ## 📖 Core Content * **DOM (Document Object Model) 구축:** 브라우저가 HTML 데이터를 받으면 바이트를 문자, 토큰, 노드로 변환한 뒤 이를 기반으로 DOM 트리를 구축합니다 [1, 7]. 이 과정은 점진적(incremental)으로 이루어지기 때문에 브라우저는 네트워크 요청이 진행 중인 상태에서도 트리 구성을 시작할 수 있습니다 [1, 8]. 생성된 노드의 수가 많을수록 이후의 레이아웃과 페인트 단계에서 더 많은 시간이 소요됩니다 [1, 9]. * **CSSOM (CSS Object Model) 구축:** DOM과 달리 CSSOM 구성은 점진적이지 않으며 렌더링을 차단(Render-blocking)합니다 [8, 9]. 브라우저는 사용자가 스타일이 적용되지 않은 날것의 콘텐츠(FOUC)를 보는 것을 방지하기 위해, 연결된 모든 스타일시트를 다운로드하고 파싱할 때까지 렌더링을 중단합니다 [8, 9]. * **렌더 트리(Render Tree) 합성:** DOM과 CSSOM이 모두 준비되면 브라우저는 두 트리를 결합하여 화면에 렌더링되는 노드만 포함하는 렌더 트리를 생성합니다 [10, 11]. 이 과정에서 시각적 레이아웃에 영향을 주지 않는 `