피드로 돌아가기
Optimize Performance with Intersection Observer API
Dev.toDev.to
Frontend

Intersection Observer API가 스크롤 기반 감지의 성능 문제를 해결하고 이미지 지연 로딩과 무한 스크롤을 구현하는 방법을 소개한다

Optimize Performance with Intersection Observer API

Manas Joshi2026년 3월 30일9intermediate

Context

getBoundingClientRect()와 scroll 이벤트 리스너 조합은 페이지 레이아웃을 반복 재계산하여 성능 저하를 야기한다. 모바일 환경에서 jank 현상과用户体验 악화가 특히 두드러진다.

Technical Solution

  • IntersectionObserver 인스턴스 생성 시 콜백 함수와 options 객체 전달
  • options.root에 null 설정 시 브라우저 뷰포트를 기준 엘리먼트로 사용
  • rootMargin 속성으로 뷰포트 경계 확장 가능 (예: '0px 0px 100px 0px'로 100px 앞서 로딩)
  • threshold를 0.0~1.0 사이 값으로 설정하여 가시율 기준 정의
  • entry.isIntersecting 플래그로 엘리먼트 진입/이탈 상태 감지
  • observer.unobserve() 호출로 일회성 관찰 중지

Impact

레이아웃 재계산 빈도가 감소하여 메인 스레드阻塞 현상이 해소되고, LCP 및 CLS 등 Core Web Vitals 지표 개선에 기여

Key Takeaway

Intersection Observer는 브라우저 최적화 비동기 메커니즘에 감시 작업을 위임하여 레이아웃 스래싱을 원천 차단하는 선언적 API이다


이미지-heavy한 페이지에서 data-src 속성에 리소스 URL을 저장하고 IntersectionObserver로 감시하면 뷰포트 진입 시점에 src를 설정하여 초기 로딩 시간을 단축할 수 있다

원문 읽기