Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- 백엔드
- CS
- 데이터베이스
- Spring
- 보안
- 웹성능최적화
- devops
- 인증
- DEVIEW2023
- AbstractAggregateRoot
- 인프라
- 클린코드
- 백엔드기초
- spring event
- 백엔드개발자
- 캐시
- http
- db
- 세션
- 성능최적화
- SnowFalke
- 네트워크
- Spring Boot
- 웹개발
- java
- 프론트엔드
- 백엔드개발
- redis
- JPA
- interceptor
Archives
- Today
- Total
이것저것 개발기록
"주소창에 엔터를 친 후" 브라우저가 화면을 그리는 5단계 본문
"내가 짠 코드가 어떻게 실제 화면이 될까요?"
성능 좋은 웹사이트를 만들기 위해 반드시 알아야 할 브라우저의 내부 동작 원리, 주요 렌더링 경로(Critical Rendering Path)를 정리합니다.
1. 렌더링의 5단계 과정
- DOM 트리 생성: 서버로부터 받은 HTML을 파싱하여 객체 모델인 DOM(Document Object Model)을 만듭니다.
- CSSOM 트리 생성: 스타일시트(CSS)를 파싱하여 CSSOM(CSS Object Model)을 만듭니다.
- 렌더 트리(Render Tree) 결합: DOM과 CSSOM을 합쳐 실제로 화면에 보일 요소들만 골라 렌더 트리를 구성합니다.
- 레이아웃(Layout): 각 노드가 화면의 정확히 어느 위치에, 어떤 크기로 배치될지 계산합니다.
- 페인트(Paint): 계산된 레이아웃을 바탕으로 화면에 실제 픽셀을 그립니다.
2. 리플로우(Reflow)와 리페인트(Repaint)
자바스크립트로 DOM을 수정하면 브라우저는 다시 레이아웃을 계산하고(Reflow) 화면을 다시 그립니다(Repaint). 이 과정이 빈번하게 일어나면 화면 버벅임의 원인이 됩니다.
💡 실무 노트
면접에서 "브라우저 성능을 어떻게 개선했나요?"라는 질문을 받으면 이 렌더링 과정을 활용해 답변해 보세요.
팁: 예를 들어, <script> 태그를 HTML 하단에 두는 이유는 JS 파싱이 DOM 생성을 방해(Block)하지 않게 하기 위해서입니다. 또한 애니메이션을 구현할 때 width나 top 대신 transform이나 opacity를 쓰면 리플로우 과정을 건너뛰고 바로 페인트(정확히는 합성) 단계로 가기 때문에 훨씬 부드러운 화면을 제공할 수 있습니다.
"브라우저의 마음을 이해할 때, 비로소 끊김 없는 사용자 경험(UX)이 완성됩니다."
'IT 이야기' 카테고리의 다른 글
| "에러는 막는 것이 아니라 관리하는 것" 백엔드 예외 처리 전략 (0) | 2026.01.09 |
|---|---|
| "데이터가 자꾸 꼬여요" 동시성 문제를 해결하는 낙관적 락과 비관적 락 (0) | 2026.01.08 |
| "유지보수 지옥에서 탈출하기" 객체지향 설계의 5가지 원칙: SOLID (1) | 2026.01.07 |
| "DB 연결이 너무 느리다면?" 커넥션 풀(Connection Pool)의 원리 (0) | 2026.01.07 |
| "웹이 왜 이렇게 빨라졌지?" HTTP/1.1과 HTTP/2의 결정적 차이 (0) | 2026.01.06 |