1. DNS 조회로 도메인을 IP로 변환 → 2. TCP 3-way handshake (HTTPS면 TLS 핸드셰이크 추가) → 3. HTTP 요청 전송 → 4. HTML 응답 수신 → 5. HTML 파싱하여 DOM 트리 구성 → 6. CSS 파싱하여 CSSOM 구성 → 7. DOM + CSSOM 결합하여 렌더 트리 생성 → 8. 레이아웃(각 요소의 위치/크기 계산) → 9. 페인트(픽셀 그리기) → 10. 합성(레이어 조합하여 화면 표시)
01 · Concept
브라우저 렌더링 과정
URL을 입력한 순간부터 화면에 픽셀이 그려지기까지, 브라우저는 일련의 정교한 파이프라인을 수행합니다.
브라우저가 웹페이지를 렌더링하는 과정은 크게 네트워크 단계와 렌더링 단계로 나뉩니다. 네트워크 단계에서 리소스를 받아오고, 렌더링 엔진이 이를 파싱하여 화면에 그립니다. 각 단계를 이해하면 성능 최적화의 핵심 포인트를 잡을 수 있습니다.
02 · Interactive Demo
렌더링 파이프라인 시각화
각 단계를 순서대로 살펴보며 브라우저가 어떻게 화면을 그리는지 확인하세요.
0 / 10
🔍
DNS 조회
~20-120ms
→
🤝
TCP 연결
~30-100ms
→
📨
HTTP 요청
~10-50ms
→
🌳
DOM 파싱
~50-200ms
→
🎨
CSSOM
~30-100ms
→
🔗
렌더 트리
~10-30ms
→
📐
레이아웃
~10-50ms
→
🖌️
페인트
~10-50ms
→
🧩
합성
~5-10ms
→
✅
완료
FCP
▶ 재생 버튼을 누르거나 '다음'을 클릭하세요
브라우저 렌더링의 각 단계를 순서대로 살펴볼 수 있습니다.
03 · Code Example
코드 예시
실제 코드로 동작 원리를 확인하세요.
// DOM 트리 구성 완료 시 (이미지/스타일시트 로딩 전)
document.addEventListener('DOMContentLoaded', () => {
console.log('DOM 준비 완료!');
// DOM 조작 가능
document.querySelector('#app').textContent = 'Hello';
});
// 모든 리소스(이미지, 스타일시트 등) 로딩 완료 시
window.addEventListener('load', () => {
console.log('모든 리소스 로딩 완료!');
// 이미지 크기 등 접근 가능
const img = document.querySelector('img');
console.log(img.naturalWidth);
});04 · Interview Point
면접 핵심 질문
리플로우는 레이아웃(위치/크기)이 변경될 때 발생합니다. 리플로우가 발생하면 반드시 리페인트도 뒤따릅니다.
리페인트는 시각적 속성만 변경될 때 발생합니다.
최적화:
width, height, margin 변경 시 발생합니다.리페인트는 시각적 속성만 변경될 때 발생합니다.
color, background, visibility 변경 시 리플로우 없이 리페인트만 발생합니다.최적화:
transform과 opacity는 합성(Composite) 단계에서만 처리되어 리플로우/리페인트를 건너뜁니다.1. CSS는
<head>에 배치 (렌더 차단 리소스) 2. JS는 <body> 하단 또는 defer/async 사용 3. 중요 CSS를 인라인으로 삽입 4. 불필요한 CSS/JS를 제거하여 크리티컬 리소스 최소화 5. 리소스 압축 (gzip/brotli) 및 캐시 활용 6. preload, prefetch로 중요 리소스 우선 로드