웹 페이지에서 이미지는 전체 용량의 큰 비중을 차지하는 요소로, 사용자 경험(UX)과 SEO에 직결됨. Next.js는 next/image 라이브러리의 Image 컴포넌트를 통해 자동 최적화 기능을 제공함. 이는 브라우저가 이미지를 다운로드하기 전, 서버단에서 이미지 크기 조정 및 포맷 변환을 수행하여 전송량을 최소화하는 원리임.
기존 JPEG 대비 압축률이 월등한 WebP나 AVIF 포맷으로 자동 변환하여 제공. 브라우저 지원 환경에 맞춰 최적의 포맷을 선택함.
뷰포트에 보이지 않는 이미지는 로드하지 않다가, 사용자가 스크롤하여 이미지에 가까워질 때 로딩을 시작함. 초기 페이지 로딩 속도 개선에 탁월함.
사용자의 디바이스 화면 크기에 맞춰 적절한 해상도의 이미지를 생성함. 모바일 사용자에게 4K급 이미지를 전송하는 낭비를 방지함.
srcset을 자동 생성하여 대응next/image를 사용하면 복잡한 설정 없이도 최적화 적용 가능.
import Image from 'next/image'
// 로컬 이미지 또는 외부 URL 사용
<Image
src="/profile.png"
alt="프로필 이미지"
width={500}
height={500}
priority // LCP 요소인 경우 우선 로딩 설정
placeholder="blur" // 로딩 중 블러 처리된 이미지 노출
/>
priority 속성을 모든 이미지에 남발하여 초기 로딩 성능을 오히려 저하시키는 실수. 중요한 메인 배너에만 제한적 사용 권장.width와 height를 누락하거나 잘못 설정하여 레이아웃 시프트(CLS) 발생. 이미지 영역을 미리 확보하는 것이 중요.next.config.js에 도메인 허용 설정을 잊어 이미지가 엑스박스로 표시되는 경우 빈번함.핵심 요약
- WebP/AVIF 자동 변환을 통한 용량 최적화
- Lazy Loading 및 반응형 사이즈 제공으로 성능 극대화
- 정확한 width/height 설정으로 레이아웃 흔들림 방지