React는 SPA 즉, Single Page Application로 필요한 정적 리소스를 최초 한 번만 다운로드하고 이후 변경이 필요한 경우
전체를 Reload하지 않고 필요한 변경된 부분만 갱신된다.
SPA 방식을 사용하는 이유는 React가 CSR 방식으로 작동되기 때문이다.
CSR은 Client Side Rendering이고 작동 순서는
SSR은 바로 CSR의 단점인 초기 페이지 로딩 속도와 SEO의 단점을 개선하였다.
CSR이 초기에 전송되는 페이지의 로딩 속도 자체는 빠르지만, 서비스에 필요한 데이터를 추가로 요청해서
재구성하기 때문에 전체적인 완료 시점이 SSR보다 느리다.
SSR의 작동 순서로는
정리하자면, CSR에 비해 SSR은 사용자에게 보이는 페이지가 더 빨리 로딩된다.
CSR은 Client가 HTML, JS, React를 모두 로딩하고 페이지가 보이지만, SSR은 Server가 렌더링 될 HTML을 먼저 보내주기 때문에 더 빨리 보인다.
Google의 경우 브라우저 내에 JS 엔진이 있어 CSR을 사용해도 검색엔진 봇들이 JavaScript를 해석할 수 있지만,
대부분의 엔진의 경우 JS 엔진이 없기 때문에 페이지를 구성하기 전에 HTML에 아무것도 없으므로 검색엔진 노출이
어렵다.
하지만, Next.js는 서버가 HTML을 먼저 보내주기 때문에 SEO 최적화가 더 쉽게 이루어진다.
즉, SPA를 사용하면서, 같이 SSR을 사용하는 방식을 사용할 수 있는 것이다.
작동 방식으로
사용자가 초기에 Server에 페이지 접속을 요청한 경우 SSR 방식으로 렌더링 될 HTML을 보낸다.
브라우저에서 JS를 다운로드하고 React를 실행한다.
사용자가 페이지와 상호작용하며 다른 페이지로 이동할 경우 CSR 방식으로 Server가 아닌 브라우저가 처리한다.
Next는 SSR과 SEO 등을 하기 위한 React 프레임워크이다.
사용자가 초기에 페이지 접속을 요청한 경우 SSR 방식으로 렌더링 될 HTML을 보내줘 SEO 최적화가 쉽게 이루어지고, 이후 사용자가 페이지 내에서 상호작용을 할 경우, CSR 방식으로 브라우저에서 처리해서 SPA 장점을 가지고 있다.