CSR, SSR, SSG 렌더링 방식을 알기 전에 SPA와 MPA의 개념부터 알아야 한다. 이들은 무엇일까?
SPA(Single Page Application)은 단일 페이지로 구성된 웹 어플리케이션이다.
웹 어플리케이션에 필요한 모든 리소스를 최초 렌더링 시, 한번에 다운로드 하고 이후 새로운 페이지 요청이 있을 때 갱신에 필요한 리소스만 서버로부터 전달받아 페이지를 구성한다.
📌 즉, SPA는 최초에 페이지를 로딩 하고 페이지 리로딩 없이 필요한 부분만 서버로부터 전달받아 회면을 갱신하는 것이다. 따라서 화면의 깜빡임 없이 자연스럽게 페이지가 이동하기 때문에 더 나은 사용자 경험을 제공할 수 있다.
SPA는 기능별로 구분되어 있는 페이지들을 하나의 html 파일에서 컨트롤 한다.
검색엔진의 크롤러는 링크를 타고 돌아다니며, 페이지별로 html 파일을 읽어서 각각의 페이지에 색인을 만들고 검색결과로 색인된 페이지를 보여준다.
SPA는 html 파일이 하나이기 때문에 여러 페이지의 뷰가 단일한 Meta data(title, discription)로 보인다. 따라서 검색엔진에 노출되기가 어렵다.
SSR 렌더링
일반적으로 SPA는 CSR을 활용한다. 하지만 SSR을 사용하여 SEO에 최적화된 SPA를 만들 수 있다.
MPA(Multi Page Application)은 여러 페이지로 구성되어 있고, 새로운 페이지를 요청할 때마다 서버에서 리소스가 다운되는 전통적인 웹페이지 구성 방식이다. 페이지 이동/ 새로고침 시 전체 페이지를 다시 렌더링한다.
MPA는 페이지마다 html 파일이 존재하기 때문에, 검색엔진 크롤러가 각각의 페이지마다 고유의 색인을 만들어 검색엔진에 노출되기 쉬워 SEO에 최적화 되어있다.
🤔 하지만, 페이지를 이동하면 전체 페이지를 다시 렌더링하기 때문에 속도가 느리며 페이지가 많기 때문에 지속적으로 유지보수 하는 것이 어렵다.
SPA는 소셜 플랫폼과 같은 SNS에 적합할 것이고, MPA는 아마존, 이베이 같은 여러 제품 및 서비스를 다루는 전자 상거래 또는 많은 콘텐츠를 다루는 플랫폼에 적합할 것이다.
일반적으로 SPA는 CSR 방식을, MPA는 SSR 방식을 사용하게 된다.
SPA는 최초 렌더링 시 리소스를 한번에 다운로드 하고 이후 새로운 페이지 요청이 있을 때 갱신에 필요한 리소스만 서버로부터 전달받아 페이지를 구성하기 때문에 CSR 방식을 사용한다.
MPA는 새로운 요청이 있을 때마다 서버에서 이미 렌더링된 리소스를 받아오기 때문에 SSR 방식을 사용하게 된다.
📌 CSR, SSR은 페이지가 몇개인지, 렌더링을 어디서 하는지에 따라서 달라지는 개념이다.
CSR(Client Side Rendering)은 클라이언트측에서 렌더링하는 방식이다. 최초에 한번 서버에서 전체 페이지를 로딩하여 보여주고 이후에, 사용자의 요청이 올 때마다 클라이언트가 서버에서 리소스를 받아와 렌더링 한다.
= 초기로드시 빈 HTML과 모든 로직이 담긴 JS를 로드한다.
= 빈 HTML에 Js를 이용하여 DOM을 동적으로 그려낸다.
SSR(Server Side Rendering)은 서버측에서 렌더링하는 방식이다. 서버에서는 요청이 들어온 즉시 페이지에 필요한 리소스를 html에 삽입하여 모든 렌더링 준비를 끝내고 클라이언트에게 전달한다. 클라이언트는 전달받은 것을 다운로드 하고, 사용자에게 완성된 사이트를 보여준다.
SSG(Static Site Generation)는 클라이언트에 필요한 페이지들을 미리 준비해뒀다가, 요청을 받으면 이미 완성된 파일을 반환하여, 브라우저에 보여주는 방식이다.
📖 React에서는 useEffect를 통해 데이터를 가지고 온다.
서버에서 요청할 때, 즉시 만드는지/ 미리 만들어두는지의 차이가 있다.
SSR은 요청 시, 서버에서 html을 즉시 만들어 응답하기 때문에 데이터가 달라져서 미리 만들어두기 어려운 페이지에 적합하다.
SSG는 미리 만들어두고 요청 시, 해당 페이지를 응답하기 때문에 데이터가 바뀔 일이 거의 없는 페이지에 적합하다.
유저랑 상호작용이 많고 고객의 개인정보로 기준으로 이루어지는 서비스라면 검색엔진 노출보다 고객의 데이터를 보호하는 것이 더 중요할 수 있다 -> CSR
회사홈페이지이기 때문에 상위노출이 필요하고 누구에게나 항상 같은 내용을 보여줘야하며 매주 업데이트 되어야한다면 ->SSR
회사홈페이지이기 때문에 상위노출이 필요하고 누구에게나 항상 같은 내용을 보여줘야 하지만 업데이트를 거의 하지 않아도 된다면 -> SSG