브라우저 렌더링 과정과 Web Vitals 성능 측정
많은 사람들이 서버 문제만 생각하지만,
실제로는 브라우저 내부의 화면 그리기(렌더링) 과정에서 지연이 발생하는 경우가 많다.
이때 ‘Web Vitals’ 지표가 사용자가 답답함을 느끼는 순간을 숫자로 보여주는 진단서 역할을 한다.
HTML → DOM → CSSOM → Render Tree → Layout → Paint → Composite → 화면 출력
이 과정 속에서 LCP, CLS, FID 문제가 발생한다.
[HTML 파싱] → [DOM/CSSOM 생성] → [Render Tree] → [Layout] → [Paint] → [Composite]
↓ ↓ ↓ ↓
LCP 발생 가능 CLS 발생 가능 CLS 발생 가능 FID 발생 가능 (JS Block)
문제 | 설명 | **사용자 체감 |
---|---|---|
Reflow (레이아웃 변경) | 요소 하나 변경해도 다른 요소들 다시 계산됨 | 화면이 덜컹거림 |
Render blocking | JS 때문에 HTML/CSS 파싱 멈춤 | 멈춘 느낌 |
Layout shift | 이미지 크기나 폰트 로딩이 늦으면 화면이 밀림 | 글씨/버튼 움직임 |
📊 Web Vitals = 사용자가 느끼는 불편을 ‘숫자’로 보여주는 브라우저 성능 진단서
지표 | 브라우저 내부 단계 | 사용자가 느끼는 불편 |
---|---|---|
LCP | DOM + CSSOM + Paint | 중요한 콘텐츠가 늦게 떠서 답답 |
CLS | Layout → Paint | 페이지가 덜컹거려서 실수 유발 |
FID | JS 실행 (Main Thread) | 클릭했는데 멈춤 |
<!-- BEFORE -->
<img src="/hero.png" />
<!-- AFTER -->
<img src="/hero.png" loading="lazy" width="600" height="400" />
<!-- BEFORE -->
<img src="/product.jpg" />
<!-- AFTER -->
<img src="/product.jpg" style="width:300px; height:300px;" />
<!-- BEFORE -->
<script src="/heavy-lib.js"></script>
<!-- AFTER -->
<script src="/heavy-lib.js" defer></script>
Virtual DOM은 실제 DOM을 직접 건드리지 않고, ‘가상으로 바뀐 부분만 계산’해서 빠르게 반영한다.
그래서 JS의 무거운 DOM 업데이트를 줄여 FID 지표를 개선하는 데 효과적이다.
특히 SPA(싱글 페이지 앱) 구조에서 React의 Virtual DOM이 없으면 클릭 시 UI가 멈추는 일이 더 자주 발생한다.
Virtual DOM은 변경된 부분만 계산 → DOM 조작 최적화 → FID 개선 효과
도구 | 기능 | 특징 |
---|---|---|
Lighthouse | 자동 점수 + 문제 분석 | Chrome DevTools 내장 |
WebPageTest | 실제 환경 테스트 | 핸드폰, 느린 네트워크 등 조건 선택 가능 |
Performance 탭 | 프레임 단위 분석 | 개발자용 고급 도구 |
문제 | 해결책 |
---|---|
이미지 늦게 뜸 | width/height 지정 + lazy |
글씨 로딩 느림 | font-display: swap |
JS 늦게 로딩 | defer 또는 async |
화면이 밀림 | Skeleton UI + 고정 크기 지정 |
느린 렌더링 | React + Virtual DOM 구조 활용 |
구분 | Before (느림/불안정) | After (최적화/빠름) |
---|---|---|
LCP | 이미지 늦게 Paint (3.18s) | 빠른 Paint (0.52s) |
CLS | 화면 덜컹 (0.20) | 안정 (0) |
FID/INP | JS block으로 클릭 응답 불량 | 즉시 반응 (8ms) |
Before
After
Before
After
Before
After
Web Vitals는 사용자 짜증을 수치로 보여주는 지표다.
브라우저 렌더링 흐름을 이해하면,
속도가 아니라 사용자 경험 중심 성능 개선이 가능하다.