swimminginthecode DIVE!

FRONT/Next.js

Next.js 06 - 프리패칭

dazz6 2025. 4. 24. 18:00

프리패칭(Prefetching)이란?

사용자가 페이지를 방문하기 전에, 미리 다음 페이지의 데이터를 불러와 빠르게 이동시켜주는 기능

 

・ 사용자는 클릭만 해도 페이지가 바로 뜨는 것처럼 느껴지며

・ UX + 실제 체감 성능이 향상된다.


프리패칭의 작동 방식

조건 설명
<Link> 사용 next/link를 통한 라우팅만 자동 프리패치
뷰포트 진입 해당 링크가 화면에 보여질 때만 prefetch
prefetch 활성화 기본값은 true로, <Link prefetch={false}> 로 설정 가능

페이지 타입별 프리패치

1. 정적(static) 페이지

/, /about, /contact 같이 빌드 타임에 페이지가 고정되어 있는 경우

 

내용이 고정되어 있기 때문에 Next.js는 해당 페이지의 JS(page.js)와 JSON 데이터(.json)을 만들어 둔다.

이후 브라우저는 이 JS와 .json를 미리 다운로드(prefetch) 한다.

 

2. 동적(dynamic) 페이지

/book/[id], /profile/[id] 같이 경로 안에 동적 파라미터가 들어가 있는 경우

 

어떤 id를 클릭할지 모르기에 JS 파일이 아닌 RSC Payload만 미리 요청한다.


프리패칭 주의사항

1. prefetch는 JS가 아닌 다른 데이터도 포함

・ App Router에서는 서버 컴포넌트가 HTML만 렌더링하므로 RSC Payload 위주로 프리패치함

 

2. 링크가 화면에 보여야 prefetch

・ 숨겨진 상태나 스크롤 바깥에 있으면 프리패치 안 됨

 

3. 동적 세그먼트는 조건부 prefetch 필요

・ 예를 들어 example/[id] 처럼 id 를 미리 알 수 없는 경우 prefetch 제한

・ 이럴 경우 prefetch 수동 트리거 혹은 fallback 전략 고려

 

4. prefetching 이 많으면 오히려 느려질 수 있음

・ 한 페이지에 많은 링크가 있을 경우, 리소스를 미리 너무 많이 가져오게 되어 초기 로딩 부하 유발 가능

'FRONT > Next.js' 카테고리의 다른 글

Next.js 08 - 풀 라우트 캐시  (0) 2025.04.28
Next.js 07 - 데이터 캐싱과 메모이제이션  (0) 2025.04.25
Next.js 05 - React Server Component  (0) 2025.04.23
Next.js 04 - 페이지 라우팅  (0) 2025.04.22
Next.js 03 - app 디렉토리  (0) 2025.04.21