해결된 질문
작성
·
61
·
수정됨
0
현재 페이지 라우터 강의까지 듣고 궁금한 점이 생겨서 질문드립니다!
Q1. 다음과 같은 상황일 때, book페이지는 어떤 렌더링 방식이 적합한가요? SSG, SSR, ISR 모두 완벽히 맞아 떨어진다는 생각이 들지 않아 질문드립니다
데이터 변경 가능성이 적고, 관리자 서비스를 통해 데이터가 변경되나, 변경 시점이 명확하지 않은 경우
on-demand revalidation 사용이 안되는 경우 (next12)
Q2. 만약 on-demand revalidation을 사용할 때, 별도의 서비스에서 일어난 요청을 기준으로 렌더링을 해야한다면 그 요청이 일어났음을 알 수 있는 방법이 있나요?
답변 2
1
안녕하세요 이정환입니다.
재미있는 질문이네요! 순서대로 답변 드리겠습니다.
Q1의 경우
최신 데이터 반영이 얼마나 빠르게 이루어져야 하는지에 따라 달라질 것 같아요 만약 조금이라도 늦어선 안된다면 SSR을 선택해야 할 것 같고, 그렇지 않다면 짧은 초 주기의 시간 기반 ISR을 선택할 것 같습니다.
Q2의 경우
전형적인 웹 사이트라면 보통은 백엔드 서버에서 알 수 있죠! 예를들어 게시글 상세 페이지가 있다고 가정하면, 해당 게시글이 수정되거나 댓글이 추가되는 API가 백엔드 서버에게 요청되면 이 타이밍에 revalidate 요청을 보내면 됩니다. 또는 만약 서드파티 서비스를 사용하시는 상황이라면 해당 서드파티에서 제공하는 웹훅이나 트리거등의 연동 기능을 활용하셔야 할 것 같아요
혹은 데이터의 변경이 정말 잦지 않고 어드민만 데이터를 변경한다면 SSG 페이지로 설정 후 데이터 변경시 마다 프로젝트를 다시 빌드하는 방법도 고려해볼 수 있을 것 같아요
보통 개인 블로그 프로젝트의 경우 이렇게 많이 작업하시더라구요!
1
안녕하세요, 인프런 AI 인턴입니다. jb님!
Next.js에서의 렌더링 방식 선택과 관련된 질문에 답변을 드리겠습니다.
Static Site Generation (SSG): 데이터가 자주 변경되지 않는 경우, SSG가 적합할 수 있습니다. 정적 페이지는 빌드 시에 생성되고, 먼저 사용자에게 매우 빠르게 제공될 수 있습니다.
Server-side Rendering (SSR): 모든 요청에 대해 최신 상태로 페이지가 필요하다면, SSR을 고려할 수 있습니다. 하지만 이는 성능에 영향을 줄 수 있습니다.
ISR 사용 불가: 만약 버전 제한으로 ISR을 사용할 수 없다면, 관리자 서비스에서 업데이트가 있을 때마다 정적 페이지를 재생성하는 방식을 통해 최신 데이터를 제공할 수 있게 하거나, SSR을 고려해야 합니다.
on-demand ISR을 사용하려는 상황이지만 Next.js 12 이전이라 사용할 수 없는 경우에 대해서는 다른 접근법이 필요합니다.
Webhook 사용: 데이터가 변경될 때마다 푸시 요청을 백엔드로 보내는 웹훅을 설정하여 페이지를 업데이트 합니다. 이를 통해 변경이 감지되었음을 확인할 수 있습니다.
Custom API Route 활용: Next.js에서 커스텀 API 라우트를 생성한 후, 이를 트리거로 사용하여 변경을 감지하고 해당 정보를 클라이언트에게 전달하는 방법이 있습니다.
유사 질문과 답변들이 다음의 URL에서 확인 가능합니다:
위 링크에서는 사전 렌더링 방법에 대한 다양한 시나리오에 대한 논의가 진행되고 있으며, 이를 통해 추가적인 인사이트를 얻으실 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
답변 감사합니다! 서버 리소스가 불필요하게 사용되다보니 더 나은 방법이 없을까 고민했었는데, 트레이드 오프를 고려해서 프로젝트에 맞는 최선의 방법을 선택해야겠군요.