[로우로우] Lazy Loading과 Intersection Observer를 적용한 성능 최적화

JeongInHuh·2025년 11월 10일

Lawlow 프로젝트

목록 보기
1/1

Lazy Loading

Lazy loading은 Suspense

const WhatDoWeProvideSection = React.lazy(() => import('./WhatDoWeProvideSection'));

function MainPage() {
  return (
    <React.Suspense fallback={<div style={{ height: '400px' }} />}>
      <WhatDoWeProvideSection />
    </React.Suspense>
  );
}

Intersection Observer

react-intersection-observer 라이브러리

온보딩페이지의 맨 위 영역은 바로 보여주되, 그렇지 않은 경우는 공용으로 사용되는 Skeleton 컴포넌트를 대신 보여준다.

변경 전

FCP : 1.8s
LCP : 3.3s
TBT : 2,220ms
Speed Index : 10.6s

변경 후


FCP : 1.3s
LCP : 1.7s
TBT : 1,040 ms
Speed Index : 3.3s

정리

  • FCP : 1.8s → 1.3s ( 27.8% ↓)
  • LCP : 3.3s → 1.7s ( 48.5% ↓)
  • TBT : 2,220ms → 1,040 ( 53.2% ↓)
  • Speed Index : 10.6s → 3.3s ( 68.9% ↓)

개선률(%)은 위와같다.

각 요소의 역할

지표의미체감 속도와의 관계필요성
FCP (First Contentful Paint)화면에 첫 콘텐츠(텍스트·이미지 등)가 표시되는 시점“화면이 뜨기 시작했다”는 사용자 인식과 직결⭐ 매우 중요
LCP (Largest Contentful Paint)주요 콘텐츠(큰 이미지·텍스트)가 완전히 표시된 시점“화면이 다 떴다”는 체감과 직결⭐ 매우 중요
TBT (Total Blocking Time)JS 실행으로 메인 스레드가 막힌 총 시간인터랙션(클릭 등) 지연과 직결⚙️ 성능 개선 핵심
Speed Index콘텐츠가 얼마나 빠르게 시각적으로 채워지는가화면 채워지는 체감 속도와 직결🌈 종합적 판단용

참고 자료

profile
신입개발자. 이젠 서버를 곁들인 velog 꾸미기 : https://velog.io/@ybkim3603/Velog벨로그-사용법-튜토리얼 Git컨벤션: https://velog.io/@shin6403/Git-git-커밋-컨벤션-설정하기 커리어 방향 설정 모음글:https://velog.io/@eon7500/커리어-방향성-설정에-도움되는-글

0개의 댓글