프론트엔드 개발 · 중급
웹 페이지 렌더링 성능 최적화를 위해 Critical Rendering Path (CRP)를 이해하고 개선하는 것이 중요합니다. CRP의 주요 단계들을 설명하고, 이 경로를 단축하거나 최적화하기 위한 구체적인 방법들을 제시해 보세요.
힌트 · HTML 파싱, CSSOM, 렌더 트리 생성 과정을 설명하고, 렌더링 차단 리소스 제거, 비동기 로딩 등을 언급하세요.
DOM 트리CSSOM 트리렌더 트리레이아웃페인트
모범답안
Critical Rendering Path (CRP)는 브라우저가 HTML, CSS, JavaScript를 파싱하여 화면에 픽셀을 그리는 데 필요한 일련의 단계입니다. 주요 단계는 다음과 같습니다.
- DOM 트리 구축: HTML을 파싱하여 DOM 트리를 생성합니다.
- CSSOM 트리 구축: CSS를 파싱하여 CSSOM 트리를 생성합니다.
- 렌더 트리 구축: DOM 트리와 CSSOM 트리를 결합하여 렌더 트리를 생성합니다. 렌더 트리는 화면에 표시될 노드만 포함합니다.
- 레이아웃: 렌더 트리를 기반으로 각 노드의 정확한 위치와 크기를 계산합니다.
- 페인트: 계산된 레이아웃 정보를 사용하여 화면에 픽셀을 그립니다.
CRP를 최적화하는 방법은 다음과 같습니다.
- 렌더링 차단 리소스 제거/최소화:
<script>태그를async또는defer속성과 함께 사용하거나, CSS를 인라인 스타일로 삽입하여 초기 렌더링을 차단하는 리소스를 줄입니다. - CSS 최적화: 사용하지 않는 CSS 규칙을 제거하고, CSS 선택자를 간소화하여 CSSOM 트리 구축 시간을 단축합니다.
- 이미지 최적화: 이미지 크기를 줄이고, 적절한 이미지 포맷을 사용합니다.
- 브라우저 캐싱 활용: 정적 자산에 대한 캐싱 정책을 설정하여 반복적인 로딩을 방지합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 웹 성능 최적화 면접 질문
- 이미지 최적화(Image Optimization)를 위해 어떤 방법들을 사용할 수 있으며, 각각의 장점은 무엇인가요?
- CSS와 JavaScript 파일을 압축(Minification)하고 번들링(Bundling)하는 것이 웹 성능에 어떤 이점을 주나요?
- 지연 로딩(Lazy Loading)이란 무엇이며, 어떤 종류의 콘텐츠에 주로 적용되며 웹 성능에 어떤 영향을 미치나요?
- `<script>` 태그에 `async`와 `defer` 속성을 사용하는 것이 웹 페이지 성능에 어떤 영향을 미치는지 설명하고, 각각 어떤 상황에서 사용해야 하는지 구체적인 예시와 함께 비교 설명해 주세요.
- 웹 페이지에 많은 이미지가 사용될 때 발생할 수 있는 성능 문제를 해결하기 위한 이미지 최적화 전략들을 3가지 이상 설명하고, 각 전략이 어떤 원리로 성능을 개선하는지 설명해 주세요.
- 웹 성능 최적화에서 HTTP 캐싱이 중요한 이유를 설명하고, `Cache-Control` 헤더의 주요 지시어(예: `max-age`, `no-cache`, `must-revalidate`)들이 각각 어떤 역할을 하는지 구체적인 시나리오와 함께 설명해 주세요.