Files
2nd/00_Raw/Frontend Performance Optimization.md
T

5.1 KiB

Frontend Performance Optimization

📌 Brief Summary

프론트엔드 성능 최적화는 웹사이트의 로딩 속도, 상호작용성, 시각적 안정성을 향상시켜 사용자 경험과 검색 엔진 순위(SEO)를 극대화하는 일련의 과정 및 기술적 실천을 의미한다 [1-3]. 2025년을 기준으로 핵심 웹 바이탈(Core Web Vitals)의 최신 지표인 LCP, INP, CLS를 충족하기 위해 이미지 및 리소스 최적화, 코드 분할(Code Splitting), 렌더링 차단 요소 제거, 효율적인 렌더링 전략(SSR, SSG) 등이 동원된다 [1, 4-7]. 이를 성공적으로 구현하면 웹사이트의 이탈률을 줄이고 궁극적으로 전환율 및 수익성을 대폭 높일 수 있다 [8, 9].

📖 Core Content

  • 핵심 웹 바이탈(Core Web Vitals) 최적화 전략:

    • LCP (Largest Contentful Paint): 페이지의 주요(가장 큰) 콘텐츠가 시각적으로 로드되는 시간을 측정하며, 2.0초 또는 2.5초 이내로 최적화해야 한다 [2, 5, 10]. LCP를 개선하려면 WebP나 AVIF와 같은 차세대 이미지 포맷 사용, 중요 리소스 사전 로드(preload), CDN(콘텐츠 전송 네트워크) 활용, 서버 응답 시간(TTFB) 최적화, 그리고 서버 사이드 렌더링(SSR) 적용이 필요하다 [11-15].
    • INP (Interaction to Next Paint): 2025년부터 기존 FID를 대체한 지표로, 버튼 클릭이나 키보드 입력 등 사용자 상호작용 후 브라우저가 화면을 업데이트할 때까지의 전체 지연 시간을 측정하며 150ms~200ms 이하 유지가 목표이다 [1, 2, 4, 5, 16]. 메인 스레드를 차단하는 무거운 JavaScript 실행을 방지하기 위해, 작업을 50ms 이하의 청크로 분할하거나 Web Workers를 통해 연산을 분리하고 불필요한 서드파티 스크립트를 지연(defer)시켜야 한다 [16-20].
    • CLS (Cumulative Layout Shift): 페이지가 로드되는 동안 발생하는 예기치 않은 레이아웃 이동을 측정하며, 시각적 안정성을 위해 0.08에서 0.1 미만으로 유지해야 한다 [2, 5, 11, 12]. 이를 방지하려면 이미지 및 비디오에 명시적인 widthheight 속성을 지정하고, 동적 광고나 콘텐츠가 들어갈 공간을 미리 확보해야 하며, 폰트 로드 시 font-display: swap 또는 optional을 지정해야 한다 [12, 21-23].
  • 코드 분할(Code Splitting) 및 지연 로딩(Lazy Loading):

    • 초기 로딩 시 전체 애플리케이션 코드를 한 번에 다운로드하는 큰 번들 사이즈 문제를 해결하기 위해, 코드를 더 작은 청크(chunk)로 나누어 필요할 때만 로드하는 방식이다 [6].
    • React 환경에서는 React.lazySuspense를 결합하거나 라우트 기반 분할(Route-Based Splitting)을 통해 특정 라우트나 무거운 컴포넌트(예: 차트, 에디터 등)에만 지연 로딩을 적용한다 [24-28].
    • 이는 초기 번들 크기를 50~100KB 수준으로 줄여 TTFB와 TTI(Time to Interactive)를 획기적으로 향상시킨다 [29, 30]. 단, 화면 상단(Above-the-fold)의 중요한 콘텐츠나 영웅 이미지(Hero image)를 지연 로딩할 경우 오히려 LCP가 악화될 수 있으므로 주의해야 한다 [31].
  • 렌더링 아키텍처 (Rendering Architecture):

    • 자바스크립트가 브라우저에서 화면을 전부 구성하는 클라이언트 사이드 렌더링(CSR)은 빈 HTML 스켈레톤을 먼저 제공하므로 검색 엔진 크롤링과 성능 지표(FCP)에 악영향을 미친다 [32, 33].
    • 대신 서버 사이드 렌더링(SSR)이나 정적 사이트 생성(SSG), 점진적 정적 재생성(ISR)을 사용하여 미리 렌더링된 완벽한 HTML을 브라우저나 크롤러에 전달하면 로딩 속도와 SEO 문제를 동시에 해결할 수 있다 [34-36].

🔗 Knowledge Connections


Last updated: 2026-04-26