작성
·
247
0
몇주간 계속 공부하면서 고민을 해봤는데... 결과적으로 서버 컴포넌트에서 데이터를 가져왔을때 좋은 상황이 어떤 경우인지 모르겠습니다. 서버 컴포넌트에서 데이터를 가져왔을때, 그 데이터는 SEO에 반영이 되나요? NEXTJS의 공식문서에서는 서버 컴포넌트가 유리한 상황이 'data fetch' 라고 되어 있습니다. 하지만 지난번에 질문했을때 클라이언트 컴포넌트에서 데이터를 가져오는게 보통 더 좋다는 답변을 받았었습니다.
클라이언트에서 데이터를 가져오는게 좋은 상황과, 서버에서 데이터를 가져오는게 좋은 상황을 구분을 못하겠어서 조언을 구하고자 질문 드립니다.
답변 2
0
한 가지 더 추가하자면, 서버컴포넌트에서 데이터를 불러왔을 때는 클라이언트에 데이터를 불러오는 코드는 전송되지 않습니다. 데이터를 불러온 결과물과 컴포넌트가 합쳐져 HTML으로 만들어져 HTML만 클라이언트 컴포넌트로 전송됩니다. 데이터가 거의 바뀌지 않는다면 이 결과물을 캐싱하여 빠르게 클라이언트로 전달할 수 있습니다.
캐싱을 잘 활용할 수 있다면 서버에서 데이터를 불러와서 클라이언트에게 캐싱된 페이지를 빠르게 전달하는 게 유용하긴 하겠죠. 안 그러면 클라이언트가 HTML, JS 따로따로 받아온 후에 다시 데이터를 백엔드로 요청해야 하니까 느릴 겁니다.
0
벡엔드 서버를 따로 마련하지 않는 상황에서는 api route를 사용하지 않고도 서버컴포넌트에서 바로 db조회까지 다 할 수 있으니까 편하죠. 속도도 더 빠릅니다.
seo를 위해서 데이터를 가져와야하는 경우에도 편하고요.(generateMetadata)
그 외의 상황에서는 클라이언트에서 가져오는 경우가 좋습니다. 백엔드 서버가 있으면 ssr 목적 외에는 정말 사용 이유가 많이 줄어듭니다.
답변 정말 감사드립니다!