sanguk.dev
작성완료
Native Lazy Loading 이미지 최적화

Native Lazy Loading 이미지 최적화

네이티브 지연 로딩은 이미지 최적화에 효과적이며, 초기 페이지 로드 속도를 향상시키고 불필요한 네트워크 요청을 줄인다. HTML에 loading="lazy" 속성을 추가하는 것만으로 구현할 수 있으며, 복잡한 조건이 필요할 경우 IntersectionObserver를 여전히 사용할 수 있다. 이미지 최적화와 함께 WebP 및 AVIF 포맷을 사용하고, width, height를 명시하여 CLS를 방지하는 것이 좋다.

JavaScriptWeb Front Developer

Native Lazy Loading으로 구현하는 웹 이미지 최적화

웹 성능 최적화에서 이미지 지연 로딩(lazy loading)은 필수 요소다. 기존에는 IntersectionObserver나 스크롤 이벤트 기반의 사용자 구현이 필요했지만, 이제는 브라우저가 기본 제공하는 loading 속성만으로 훨씬 간단하게 구현할 수 있다.

왜 Lazy Loading이 필요한가

  • 초기 페이지 로드 속도 향상
  • 불필요한 네트워크 요청 감소
  • 사용자 경험 개선
  • LCP(Largest Contentful Paint) 개선
    특히 이미지가 많은 블로그, 쇼핑몰, 갤러리 페이지에서 극적인 효과를 볼 수 있다.

기본 사용법

HTML에서 단 한 줄만 추가하면 된다.

html
<img src="thumbnail.jpg" alt="thumb" loading="lazy" />

브라우저는 해당 이미지가 뷰포트 근처에 왔을 때 요청을 실행한다.

적용 시 주의사항

  • above-the-fold(첫 화면) 이미지는 lazy 사용 금지
  • iframe에도 적용 가능 (<iframe loading="lazy">)
  • Safari는 지원이 늦었지만 최신 버전은 대부분 대응
  • 중요한 이미지가 늦게 나타나는 ‘지각 로딩’ 문제에 주의

IntersectionObserver 대비 장점

  • 구현이 매우 간단
  • 스크립트 로직 불필요
  • 유지보수 편리
  • 브라우저 최적화로 안정적인 로딩 타이밍 확보

IntersectionObserver를 대체하지는 않는다

복잡한 조건(애니메이션, 지연된 데이터 로딩 등)이 필요할 때는 여전히 IntersectionObserver가 유리하다. 하지만 일반적인 이미지 로딩에는 Native Lazy Loading이 더 직관적이고 빠르다.

이미지 최적화와 함께 사용할 것

  • WebP, AVIF 이미지 포맷
  • width, height 명시로 CLS 방지
  • decoding="async" 조합
    예시:
html
<img
  src="image.avif"
  alt="example"
  width="800"
  height="600"
  loading="lazy"
  decoding="async"
/>

결론

Native Lazy Loading은 쉽고 강력한 이미지 최적화 도구다. 한 줄의 속성만으로 페이지 로딩 속도를 끌어올릴 수 있으며, 별도의 자바스크립트 로직 없이도 성능 개선을 기대할 수 있다. 웹 서비스 성능을 높이고 싶다면 가장 먼저 적용해야 할 기능이다.