ServerSide Rendering : 서버쪽에서 렌더링 준비를 마친 상태로 클라이언트에 전달하는 방식.
사용자가 웹 사이트에 요청을 보냄.
서버는 즉시 렌더링 가능한 html 파일을 만듬.
클라이언트에 전달하고 이미 렌더링 준비가 됬기 때문에 즉시 렌더링이 됨.
하지만 사이트에서 조작은 불가능(JavaScript가 읽히기 전임)
브라우저가 js 다운.
다운로드가 되면서 사용자는 컨텐츠를 볼 수 있지만 조작은 할 수 없다.
이때 사용자의 조작을 기억.
브라우저가 js Framework를 실행.
js까지 성공적으로 컴파일 되고 아까 사용자 조작이 실행되며 상호작용이 가능해진다.
서버에서 html과 js를 보내고 렌더링이 클라이언트 쪽에서 일어난다.
웹 페이지를 로딩하는 시간
SEO 대응
검색 엔진은 크롤러로 웹 사이트를 읽습니다.
CSR은 자바스크립트를 실행 시켜 동적으로 컨텐츠가 생성되기 때문에 자바스크립트가 실행 되어야 metadata가 바뀌었다.
SSR은 애초에 Server Side 에서 컴파일 되어 클라이언트로 넘어오기 때문에 크롤러에 대응하기 용이합니다.
서버 자원 사용
SSR이 서버 자원을 더 많이 사용합니다. 매번 서버에 요청을 하기 때문입니다.
CSR은 클라이언트에 자원을 많이 사용하므로 서버에 부하가 적습니다.
SSR을 사용할 때
CSR을 사용 할 때
메모리
재귀함수는 함수를 반복적으로 호출하기 때문에 스택 메모리를 사용한다. (스택 오버플로우가 발생할 수 있다. )
반면 반복문은 메모리 힙을 사용한다.
코드길이
재귀함수를 사용하면 반복문에 비해 코드수를 줄일 수 있다.
메모리 힙을 사용
속도 빠름
무한 루프는 CPU 사이클을 반복적으로 사용.
코드 길이가 길어지고 변수 사용이 많아짐. (가독성 안좋음)
스택 메모리 사용
속도 느림
무한 재귀는 스택 오버플로우 일으킴.
코드 길이도 짧고 변수가 적다.
질문 : 콜 스택이란?, 오버플로우가 발생하는 이유?