Next.js는 성능 저하의 주범인 무거운 이미지 다운로드와 느린 페이지 이동 문제를 완전히 해결하기 위해 <Image> 컴포넌트와 <Link> 컴포넌트를 기본 제공합니다. 이들을 사용하면 브라우저에 맞게 이미지가 자동 압축(WebP 변환)되고, 화면 밖의 이미지는 지연 로딩(Lazy Loading)됩니다. 또한 링크가 시야에 들어오거나 마우스가 올라가면 백그라운드에서 페이지 리소스를 미리 가져와(Prefetching) 번개처럼 빠른 화면 전환을 체감할 수 있습니다.
Next.js는 웹 사이트의 성능을 저하시키는 주된 원인인 무거운 이미지 리소스와 느린 페이지 이동 문제를 해결하기 위해, 매우 강력하게 최적화된 내장 컴포넌트를 제공합니다. 초보자도 기존 HTML 태그 대신 Next.js의 컴포넌트로 바꿔 쓰기만 하면 즉각적인 성능 향상을 경험할 수 있습니다.
<Image> 컴포넌트기존 HTML의 <img> 태그는 원본 용량 그대로 다운로드되어 화면 로딩을 지연시키고, 이미지가 뒤늦게 뜨면서 화면이 덜컹거리는 현상(CLS: Layout Shift)을 유발합니다. Next.js의 <Image> 컴포넌트는 이를 자동으로 완벽하게 해결합니다.
width와 height 속성을 명시하게 강제하여, 이미지가 다운로드되기 전부터 브라우저에 빈 공간을 확보해 둡니다. 덕분에 이미지가 뜬다고 텍스트가 팍 밀리는 현상이 사라집니다.<Link> 컴포넌트일반적인 HTML의 <a> 태그는 클릭 시 브라우저가 전체 페이지를 하얗게 지우고 다시 로딩하는 '새로고침'을 발생시킵니다. 반면 Next.js의 <Link> 컴포넌트는 단일 페이지 애플리케이션(SPA)처럼 부드럽고 찰나의 순간에 페이지를 이동시킵니다.
<Link> 컴포넌트가 노출되는 순간, Next.js는 똑똑하게 백그라운드에서 해당 연결 페이지의 데이터를 미리 슬쩍 가져옵니다. 그래서 사용자가 클릭했을 때 기다림 없이 즉시 페이지가 열리게 됩니다.<a> 대신 <Link>를, 일반 이미지 태그 대신 <Image>를 사용하는 것이 성능 최적화를 위한 가장 기본적이고 훌륭한 첫걸음입니다!