작성
·
128
·
수정됨
0
풀 라우트 캐시가 이루어지는 과정을 잘 이해 했는지에 대한 질문이에요!
서버 컴포넌트 이면서 static page일 경우, 빌드 타임에 사전 렌더링 후 결과를 풀 라우트 캐시에 저장한다.
추가 요청시 풀 라우트 캐시에 저장된 페이지를 바로 렌더링한다.
클라이언트 컴포넌트, dynamic page일 경우 빌드 타임이 아닌 서버에서 사전 렌더링을 진행한다. 추가 요청 시 다시 사전 렌더링한 후 페이지를 렌더링한다.
추가로 풀 라우트 캐시 2 강의에서 Searchbar
컴포넌트는 useSearchParams
사용하고 있는데, 클라이언트 컴포넌트이면서 동적함수를 쓰고 있어서 dynamic page에 해당되는걸로 알고있어요. 근데 빌드 타임에 걸리는 이유가 무엇인가요? useSearchParams
같은 경우는 예외적인 걸로 봐야되는 걸까요?
🚨 아래의 가이드라인을 꼭 읽고 질문을 올려주시기 바랍니다 🚨
질문 하시기 전에 꼭 확인해주세요- 질문 전 구글에 먼저 검색해보세요 (답변을 기다리는 시간을 아낄 수 있습니다)
- 코드에 오타가 없는지 면밀히 체크해보세요 (Date와 Data를 많이 헷갈리십니다)
- 이전에 올린 질문에 달린 답변들에 꼭 반응해주세요 (질문에 대한 답변만 받으시고 쌩 가시면 속상해요 😢)
질문 하실때 꼭 확인하세요
- 제목만 보고도 무슨 문제가 있는지 대충 알 수 있도록 자세한 제목을 정해주세요 (단순 단어 X)
- 질문의 배경정보를 제공해주세요 (이 문제가 언제 어떻게 발생했고 어디까지 시도해보셨는지)
- 문제를 재현하도록 코드샌드박스나 깃허브 링크로 전달해주세요 (프로젝트 코드에서 문제가 발생할 경우)
- 답변이 달렸다면 꼭 확인하고 반응을 남겨주세요
- 강의의 몇 분 몇 초 관련 질문인지 알려주세요!
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
답변 2
0
안녕하세요 이정환입니다.
우선 서버컴포넌트, 클라이언트 컴포넌트 모두 사전렌더링 단계에서 html로 생성됩니다. 두 컴포넌트간의 차이는 오직 JS Bundle에 해당 컴포넌트의 코드가 포함되어 브라우저에서 하이드레이션 되느냐 마느냐의 차이입니다.
(3.5 리액트 서버 컴포넌트 주의사항 챕터의 1분 45초를 참고하세요)
풀 라우트 캐시는 클라이언트, 서버 컴포넌트 관계없이 생성됩니다. 특정 페이지에 캐싱되지 않는 fetch나 동적 함수(쿠키, 헤더, 서치파람스, 파람스 등)이 사용될 경우 Dynamic 페이지로 설정되고 그렇지 않을 경우 Static Page로 설정되어 빌드 타임에 생성됩니다.
추가로 Dynamic 페이지임에도 빌드 타임에 오류가 발생하는 이유에 대해서 질문주셨는데요 Next.js는 기본적으로 빌드타임에 모든 페이지를 한번 검사합니다. 이를 통해 빌드 이후에 프로덕션으로 실행되었을 때 문제가 발생할 수 있는 부분이 있다면 빌드가 실패하게 됩니다.
0
안녕하세요, 인프런 AI 인턴입니다. 강기봉님께서 Next.js의 풀 라우트 캐시 및 사전 렌더링 과정에 대해서 질문을 주셨군요.
Next.js에서의 렌더링과 캐싱 개념은 초기 페이지 로드 성능을 최적화하고 사용자 경험을 개선하는 데 중요한 요소입니다. 풀 라우트 캐시는 사전 렌더링한 콘텐츠를 재사용하여 페이지 로드 속도를 높이는 전략입니다. 관련 내용을 다룬 유사한 질문과 답변이 아래에 있습니다.
관련 정보는 Next.js 정적 페이징과 캐시 질문에서 확인 가능합니다.
여기에서 더 자세한 설명은 Next.js 동적 페이지 렌더링 질문을 참고해주세요.
이 과정은 Next.js의 사전 렌더링 전략에 따라 다르게 적용되며, 각각의 장단점이 존재합니다. 따라서 프로젝트 요구사항에 따라 적절한 렌더링 및 캐싱 전략을 선택하는 것이 중요합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
특정 페이지에 캐싱되지 않는 fetch나 동적 함수(쿠키, 헤더, 서치파람스, 파람스 등)이 사용될 경우 Static 페이지로 설정되어 빌드타임에 생성되고
이 부분 반대 아닌가요?? Dynamic 페이지로 설정되는거 아닌가요?