React는 기본적으로 CSR(Client Side Rendering) 방식이다.
리액트가 포함한 자바스크립트를 이용해 HTML을 구성하기 때문에
정적인 HTML보다 SEO(Search Engine Optimization)가 약하다.
검색엔진 크롤러가 URL로 접근해도 자바스크립트를 받기 전까지 HTML 내용을 알 수 없기 때문이다.
이를 위해 리액트를 SSR(Server Side Rendering) 방식으로 구현할 수도 있다.
설정이 복잡하기 때문에 보통은 NextJS라는 리액트 라이브러리를 사용한다.
Pre-rendering
SSR을 쓰면 접속시 검색엔진에 유의미한 HTML 문서를 바로 받아올 수 있다.
더 이상 다운 받은 자바스크립트를 이용해 클라이언트에서 HTML 문서를 만드는 게 아니라
클라이언트에 보내주기 전에 이미 완성된 HTML 문서를 보내준다.
이를 NextJS에서는 Pre-rendering이라고 한다.
정적인 HTML 문서를 바로 받을 수 있어 SEO에 유리해진다.
다만 사용자가 HTML 문서만 다운 받은 뒤 클릭 등의 조작을 하더라도 반응할 수 있도록
기본적인 인터렉션을 위한 자바스크립트의 내용이 미니멀하게 HTML 문서에 포함된다.
그 다음으로 자바스크립트 다운로드가 완료되고 나서야 컴포넌트 변경 등의 인터렉션을 수행할 수 있다.
Static Generation
NextJS에서 Pre-rendering을 두 가지 방식으로 할 수 있다.
Static Generation은 대부분 사용되는 방식으로 빌드할 때 HTML 문서를 만들어 둔다.
그리하여 사용자가 페이지를 요청할 때마다 이 HTML 문서를 보내주게 된다.
만들어진 문서를 보내는 것이기 때문에 속도가 빠르므로 가능하다면 Static Generation을 사용해야 한다.
Server-side Rendering
사용자의 요청을 받았을 때마다 HTML 문서를 새로 생성해서 보내주는 방식이다.
페이지의 내용이 매번 바뀌거나 자주 업데이트가 되는 경우 사용하자.
물론 CSR을 이용하는 것도 방법이다.
nextjs.org/learn/basics/data-fetching/request-time
공식 매뉴얼에서는 두 가지를 선택하는 팁으로 다음을 생각해보라고 권한다.
"사용자의 요청이 오기 전에 페이지를 미리 렌더링 해도 괜찮은가? 아닌가?"
'React > NextJS' 카테고리의 다른 글
NextJS Image 사용 방법 (0) | 2022.09.28 |
---|---|
NextJS에서 static html로 export를 해서 AWS의 S3, Route 53, Cloudfront를 이용해 배포할 때 발생하는 route 문제 해결 방법 (1) | 2022.01.25 |
NextJS에서 SVG 불러오는 방법 (0) | 2021.12.28 |
Netlify를 이용해서 NextJS 앱을 배포할 때 발생하는 문제 해결 방법 (0) | 2021.03.05 |