-
정적 생성 (Static Generation) : Next.js는 빌드 시간에 페이지를 미리 생성하여 HTML 파일로 저장합니다. 이후에는 이 HTML 파일을 재사용하여 서버에서 데이터를 로드하지 않고 바로 클라이언트에게 전달합니다. 이렇게 정적 생성된 페이지는 CDN에 캐시되므로 성능이 향상됩니다. 정적 생성을 사용하려면 getStaticProps() 메서드를 사용하고, 데이터를 반환하는 방법을 구현해야 합니다.
-
서버 측 렌더링 (Server-side Rendering) : Next.js는 요청이 들어올 때마다 서버에서 페이지를 렌더링하고, 필요한 데이터를 로드하여 클라이언트에게 전달합니다. 이를 통해 항상 최신 데이터를 제공할 수 있으며, 데이터가 자주 변경될 경우에 유용합니다. 서버 측 렌더링을 사용하려면 getServerSideProps() 메서드를 사용하고, 데이터를 반환하는 방법을 구현해야 합니다.
-
클라이언트 측 데이터 로딩 : Next.js는 동적으로 데이터를 로드하여 클라이언트에게 전달할 수도 있습니다. 이는 페이지가 로드된 후에 추가 데이터를 필요로 하는 경우 유용합니다. 클라이언트 측 데이터 로딩을 구현하려면 useEffect()와 같은 클라이언트 사이드 라이프사이클 메서드를 사용하여 데이터를 로드하고, 상태에 저장한 뒤 렌더링하는 방식을 사용합니다.
이 외에도 Next.js에서는 SWR과 같은 라이브러리를 사용하여 데이터를 캐싱하고 관리하는 기능을 제공합니다. SWR은 데이터를 자동으로 캐싱하고 서버로부터 변경이 감지되면 자동으로 업데이트하여 화면에 보여줍니다.
참고 자료:
- Next.js 공식 문서: https://nextjs.org/docs
- SWR 라이브러리: https://swr.vercel.app/