# [[모던 웹 성능 최적화(Core Web Vitals)]]

## 📌 Brief Summary
모던 웹 성능 최적화는 렌더링 속도, 레이아웃 안정성, 상호작용 반응성 등을 개선하여 궁극적으로 사용자 경험(UX)을 향상시키고 비즈니스 전환율을 높이는 필수 과정입니다 [1, 2]. 특히 Core Web Vitals(핵심 웹 지표)인 LCP, CLS, INP는 브라우저의 실제 성능을 측정하는 지표이자 검색 엔진 최적화(SEO)의 핵심 랭킹 신호로 활용됩니다 [1, 3-5]. 이를 달성하기 위해서는 렌더링을 차단하는 CSS를 분리하고, 불필요한 Reflow와 Repaint를 유발하는 레이아웃 속성을 지양하여 최적화된 프론트엔드 환경을 구축해야 합니다 [6-8].

## 📖 Core Content

**1. Core Web Vitals(핵심 웹 지표)의 이해 및 최적화 목표**
*   **LCP (Largest Contentful Paint):** 페이지의 주요 콘텐츠가 렌더링되는 속도를 측정하며, 2.5초 미만을 목표로 합니다 [9]. 주요 콘텐츠(예: 히어로 이미지)를 빠르게 로드하기 위해 `fetchpriority="high"` 속성을 사용하거나 `rel="preload"`로 중요 자원을 미리 로드하는 기법을 적용할 수 있습니다 [10-12].
*   **CLS (Cumulative Layout Shift):** 페이지 로딩 중 발생하는 예기치 않은 레이아웃 이동(흔들림)을 측정하며, 0.1 미만으로 유지해야 합니다 [9]. CLS 악화의 주요 원인은 크기가 지정되지 않은 미디어 파일입니다 [4]. 모든 이미지와 비디오에 명시적인 `width`, `height` 속성을 포함하고, `aspect-ratio` 속성을 사용해 로드 전에 미리 공간을 확보해야 합니다 [12, 13].
*   **INP (Interaction to Next Paint):** 사용자의 입력에 사이트가 얼마나 빠르게 시각적으로 반응하는지를 측정하며, 200 밀리초 미만을 목표로 합니다 [9]. 무거운 자바스크립트로 인한 레이아웃 변경은 INP 점수를 저하시키는 주된 원인입니다 [5].

**2. 렌더링 경로 최적화 및 CSS 파일 관리**
*   **렌더링 차단(Render-blocking) 방지:** CSS는 브라우저 렌더링을 차단하는 리소스입니다 [6]. 반응형 웹이나 인쇄 환경 등 특정 조건에서만 필요한 스타일은 `media` 속성을 지닌 `<link>` 태그를 사용해 여러 파일로 분할함으로써 초기 로딩 시 렌더링 차단 시간을 줄일 수 있습니다 [14-16].
*   **파일 크기 및 선택자 최적화:** 사용하지 않는 CSS(Unused CSS)를 제거하고 코드를 압축(Minify)해야 합니다 [6, 17]. 또한 CSS 선택자(Selector)를 단순하고 구체적이지 않게 유지하면 파일 크기가 줄어들고 브라우저의 파싱 속도가 개선됩니다 [17, 18].
*   **CSS Containment 적용:** `contain`이나 `content-visibility` 속성을 활용하면 브라우저가 화면에 보이지 않는 특정 영역의 렌더링을 지연시키고 스타일 및 레이아웃을 독립적으로 계산하게 만들어 렌더링 성능을 비약적으로 끌어올릴 수 있습니다 [19, 20].

**3. Reflow, Repaint 최소화 및 애니메이션 최적화**
*   **레이아웃 속성 애니메이션 회피:** `width`, `height`, `margin`, `padding`, `box-shadow` 등의 속성을 변경하면 브라우저가 전체 레이아웃을 다시 계산하는 Reflow(또는 Layout Thrashing) 및 Repaint가 발생하여 프레임이 떨어지고 화면이 끊기는 현상이 발생합니다 [7, 8, 21-23]. 
*   **GPU 가속 활용:** 레이아웃에 영향을 주지 않는 `transform`이나 `opacity` 같은 속성을 애니메이션에 사용하면, 브라우저가 이를 GPU로 넘겨(Compositing) Reflow와 Repaint 없이 매우 부드러운 성능을 확보할 수 있습니다 [22-26].
*   **will-change의 전략적 사용:** `will-change` 속성은 브라우저에게 요소의 애니메이션 변경을 미리 알려 최적화를 준비하게 하지만, 남용할 경우 오히려 리소스를 소모하여 성능을 떨어뜨립니다 [27, 28].

## 🔗 Knowledge Connections
- **Related Topics:** 반응형 웹 디자인, CSS 애니메이션 최적화, [[Reflow와 Repaint]]
- **Projects/Contexts:** 실무 CSS 유지보수 및 아키텍처
- **Contradictions/Notes:** `will-change` 속성과 관련하여, 요소의 성능을 선제적으로 향상시키는 데 강력한 도구로 소개되지만, 과도하게 사용할 경우 브라우저 리소스를 고갈시키므로 예상되는 성능 문제를 선제적으로 해결할 때가 아니라, 이미 발생한 성능 문제를 해결하기 위한 "최후의 수단(last resort)"으로만 사용해야 한다는 점에 주의해야 합니다 [27, 28].

---
*Last updated: 2026-04-26*