Next.js의 'next/image' 컴포넌트를 활용한 이미지 성능개선

Next.js는 서버 렌더링 및 정적으로 생성된 웹 애플리케이션을 구축하는 데 널리 사용되는 React 기반 프레임워크이다. 이 프레임워크의 특징 중 하나는 'next/image' 컴포넌트로, 'next/image' 컴포넌트는 Next.js 애플리케이션에서 이미지를 처리하는 강력하고 유연한 방법을 제공한다.

'next/image' 컴포넌트는 자동 이미지 최적화(Automatic Image Optimization), 지연 로딩(Lazy Loading), 반응형 이미지 처리(Responsive Image Handling) 등 몇 가지 주요 이점을 제공한다.

자동 이미지 최적화

자동 이미지 최적화는 사용되는 이미지의 크기를 줄여 사이트 성능을 개선하는 데 도움이 되는기능이다. 이 최적화는 'next/image' 컴포넌트가 사용될 때 수동으로 개입할 필요 없이 자동으로 수행된다.

'next/image' 컴포넌트가 수행하는 자동 이미지 최적화에는 몇 가지 주요 기술이 포함된다

  1. 압축 - 'next/image' 컴포넌트는 이미지를 압축하여 크기를 줄임으로써 이미지를 로드하는 시간을 단축한다. 이 압축은 이미지 품질에 부정적인 영향을 미치지 않는 방식으로 수행된다.
  2. 크기 조정 - 'next/image' 컴포넌트는 표시되는 크기에 맞게 이미지의 크기도 조정한다. 이렇게 하면 이미지의 크기를 줄일 수 있으므로 로드해야 하는 데이터의 양이 줄어들고 로드하는 데 걸리는 시간이 단축된다.
  3. 포맷 변환 - 'next/image' 컴포넌트는 애플리케이션의 필요에 따라 이미지를 다른 형식으로 변환할 수도 있다. 예를 들어, PNG 이미지를 JPEG 형식으로 변환하여 파일 크기를 줄일 수 있다.

'next/image' 컴포넌트가 수행하는 자동 이미지 최적화는 사용되는 이미지의 크기를 줄여 로드해야 하는 데이터의 양을 줄이고 이미지를 로드하는 시간을 단축하여 사이트의 성능을 개선하는 데 도움이 된다. 그 결과 사용자가 지연 없이 이미지를 더 빠르게 볼 수 있으므로 사용자 경험이 향상된다.

 

다음은 Next.js 애플리케이션에서 'next/image' 컴포넌트를 사용하는 방법에 대한 예시이다:

import Image from 'next/image';

function App() {
  return (
    <Image
      src="/image.jpg"
      alt="A beautiful image"
      width={800}
      height={400}
    />
  );
}

이 예제에서는 'next/image'  컴포넌트를 사용하여 소스 파일 /image.jpg와 "A beautiful image"라는 대체 텍스트 설명이 포함된 이미지를 표시한다. 너비 및 높이 소품은 이미지의 크기를 지정하는 데 사용된다. 'next/image' 컴포넌트는 성능에 맞게 이미지를 자동으로 최적화하여 지정된 크기로 표시한다.

 

지연 로딩

지연 로딩은 이미지가 필요할 때만 로드하는 기술이다. 이를 통해 미리 로드해야 하는 데이터의 양을 줄여 페이지의 초기 로드 시간을 개선할 수 있다. 'next/image' 컴포넌트를 사용하면 'unfurl' 및 'loading' props를 사용하여 지연 로딩을 쉽게 구현할 수 있다.

import Image from 'next/image';

function App() {
  return (
    <Image
      src="/image.jpg"
      alt="A beautiful image"
      unfurl
      loading="lazy"
    />
  );
}

이 예시에서는 'next/image' 컴포넌트가 소스 파일 /image.jpg와 "A beautiful image"라는 대체 텍스트 설명이 있는 이미지를 표시하는 데 사용된다. 'unfurl'은 지연 로딩을 활성화하는 데 사용되며, 'loading'은 사용할 지연 로딩 유형을 지정하기 위해 "lazy"로 설정된다.

반응형 이미지 처리

반응형 이미지 처리란 장치 또는 뷰포트의 크기에 따라 이미지의 다른 버전을 로드하는 기능을 말한다. 이를 통해 더 작은 디바이스에 더 작은 이미지를 제공하여 로드해야 하는 데이터의 양을 줄이고 해당 디바이스의 성능을 개선할 수 있다.

'next/image'  컴포넌트는 반응형 이미지 처리를 기본적으로 지원하므로 다양한 미디어 쿼리에 따라 사용할 이미지의 여러 버전을 쉽게 지정할 수 있다.

import Image from 'next/image';

function App() {
  return (
    <Image
      srcSet={[
        {
          src: '/small.jpg',
          media: '(max-width: 767px)',
        },
        {
          src: '/large.jpg',
          media: '(min-width: 768px)',
        },
      ]}
      alt="A beautiful image"
      width={800}
      height={400}
    />
  );
}

이 예제에서는 'next/image' 컴포넌트를 사용하여 소형 기기용과 대형 기기용 이미지의 두 가지 버전이 포함된 소스 세트가 있는 반응형 이미지를 표시한다. 기기 또는 뷰포트의 크기에 따라 올바른 이미지가 로드된다.

결론적으로 Next.js의 'next/image' 컴포넌트가 제공하는 자동 이미지 최적화는 사이트 성능을 개선하는 데 필수적인 도구이다. 'next/image' 컴포넌트는 이미지 압축, 크기 조정, 변환을 통해 사용되는 이미지의 크기를 줄여 로드해야 하는 데이터의 양을 줄이고 이미지를 로드하는 시간을 단축한다. 그 결과 사용자가 지연 없이 이미지를 더 빠르게 볼 수 있으므로 사용자 경험이 향상된다.

'next/image' 컴포넌트 사용은 간단하고 직관적이기 때문에 Next.js 애플리케이션에 쉽게 통합할 수 있다. 따라서 사이트의 성능을 개선하고 사용자에게 더 나은 사용자 경험을 제공하려는 경우 'next/image' 컴포넌트와 자동 이미지 최적화 기능을 사용을 권장한다.

© Copyright 2023 CLONE CODING