피슝~~~!
자 그럼 클라이언트와 서버에서 랜더링이 어떻게 차이가 나는지 살펴보자. 기준은 , "랜더링 해주는 위치" 에 있다.
무엇?
서버에서 HTML이 랜더링 된 결과(완성된 웹페이지)를 브라우저로 전달해준다. 때문에, 사용자가 새로운 URL로 이동해 새로운 웹페이지가 필요할 때, 서버에서 해당 URL의 모습에 맞는 웹 페이지를 다 그려준후에 브라우저로 내려준다.(CSS,JS까지 포함된 HTML페이지이다)
장점
단점
새로고침이 발생하여 사용성이 저하된다.
서버에 과부화가 걸릴 수 있다
중복된 로딩 발생.
참고로 SSR을 처음부터 끝까지 구현하고싶다면 아래의 포스팅을 참고바람
https://junilhwang.github.io/TIL/Javascript/Design/Vanilla-JS-Server-Side-Rendering/
무엇?
최초 페이지 로딩때만 서버로 부터 리소스(HTML,CSS,JS)를 받아온다. 그 이후의 사용자의 요청에 따라 새로운 데이터를 가져올 때만 서버와 통신한다. View의 랜더링은 클라이언트에서 담당한다.
그래서 페이지에 따라 그때그때 필요할때 서버에 api요청을 하여 JSON의 형태로 데이터를 받아온다. 그럼 받아온 데이터를 가공하는 것은 클라이언트 쪽에서 한다. 클라이언트가 가공하여 HTML에 뿌려주는 것이다.
내가 이때까지 로컬서버에서 해왔던 방식이다. 그리고 라우팅을 통해 페이지 이동시에 필요한 작업을 하게 한다.
장점
단점
초기 로딩 비용이 크다.
번들링 된 JS를 받아오느라 느려지는 경우가 있다 👉 이경우 WEBPACK의 code splitting(loaded on demand)이나 tree shaking(dead code elimination)을 통해서 용량을 최소화 할 수 있다)
그래서 통신 속도가 느린곳에서는 적합하지 않은 방법일 수 있다.
검색엔진 최적화가 힘들다.
<div id=app></div>
) 보안의 문제가 있다.
여기서 hydration
이라는 개념을 설명해야할 것 같다.
HTML 안에서 js를 만나면 서버에서 다운받아온다. 그리고 js를 정적인 html 문서랑 연결하는 것이다.
물을 빨아들인 꽃처럼 생기있게 변하여 사용자에게 기능을 제공할 수 있게 된다는 그림을 그리면 될 것 같다.
https://www.howdy-mj.me/next/hydrate / https://velog.io/@hamjw0122/Next.js-Hydration#-hydration 참고
hydration: This is the process of attaching react listeners to already-existing html dom nodes.
rehydration: This is pretty much the same thing, but is used in reference to SSR - SSR returns full html, but you still need to attach the react listeners to it.
출처 : https://github.com/vercel/next.js/discussions/22276
CSR에서는 JS가 DOM을 만들고 PUSH를 하기 때문에 번들된 JS가 다운로드 되지 않으면 로딩화면만 뜰것이다. 그러나 JS가 다운되면 슈펴맨이 되서 데이터를 불로오고 그에 맞게 모든 페이지와 DOM을 랜더링 할 것이다.
반면 SSR은 완성된 HTML이 전송되기 때문에 바로 화면을 볼 수 있다. 다만 페이지마다 HTML을 요청하기에 앞서 설명했듯이 깜빡임이 있다.
SSG는 REACT+GATSBY의 조합으로 아주 우아하게 구현가능하다. 그럼 JS도 함께 가져오기에 동적인 요소도 추가가능하다.
"결론은 "NO"
SPA, MPA(Multi Page Application)는 페이지를 하나만 쓰는지, 여러개 쓰는지의 차이이고 CSR, SSR은 렌더링을 어디서 하냐의 차이로 비교 대상이 아니다.
SPA에서는 첫 페이지만 받아오고 이후에 데이터의 수정,조회를 하고 싶기 때문에 CSR이란 방식을 채택한 것이다.
반대로 MPA는 동적이지 않은 페이지를 상황에 맞게 클라이언트에 뿌려주기 때문에 SSR이란 방식을 채택한 것이다.SPA에서 SSR, MPA에서 CSR
SSR만으로는 SPA의 구현이 불가하다.
CSR만으로는 MPA의 구현이 불가하다.다만, SPA에서 첫 페이지만 SSR을 하고 그 이후는 CSR을 하면 SPA가 유지된다.
SPA에서 SSR을 할 경우, SEO(검색엔진최적화)에 더 좋다는 장점이 있다."
출처
1. https://sudalkim.tistory.com/22
2. https://so-nerdy.tistory.com/129?category=962408
3. https://www.youtube.com/watch?v=iZ9csAfU5Os&t=24s
4. https://velog.io/@hlna0308/SPA%EC%99%80-CSR%EC%9D%80-%EA%B0%99%EC%9D%84%EA%B9%8C
5. https://velog.io/@ru_bryunak/SPA-%EC%82%AC%EC%9A%A9%EC%97%90%EC%84%9C%EC%9D%98-SSR%EA%B3%BC-CSR