SSR(Server Side Rendering)
특징
Server Side Rendering 과정
- User가 웹사이트에 요청을 보냄
- 서버에서 즉시 렌더링 가능한 html 파일을 만듦
- html은 렌더링되지만 사이트 자체 조작은 불가 (Viewable but non-interactable)
- 자바스크립트 다운
- 다운 받는 동안 컨텐츠는 viewable 하기때문에 사용자 조작을 기억해놓는다
- 브라우저가 js framework를 실행
- js까지 성공적으로 컴파일 되면 기억하고 있던 사용자 조작이 실행되고 viewable and interactable 해짐
브라우저 화면의 차이에 집중해보자
장단점
장점
- 첫 페이지 로딩시간이 평균적으로 SSR이 더 빠름, SSR은 필요한 부분의 html과 스크립트만 불러오기 때문
- SEO 대응에 용이 : 검색 엔진이 자동화된 로봇인 '크롤러'로 웹사이트를 읽을 때 데이터가 모두 불러와져있으므로 크롤러에 대응하기 용이하다
단점
- 첫 페이지 외 나머지 로딩시간은 SSR이 더 느림, CSR은 이미 첫 페이지 로딩 시 나머지 부분을 구성하는 코드도 받아왔지만, SSR은 첫 페이지 로딩 과정을 정확히 다시 실행하기 때문
- 서버 자원을 더 많이 사용
CSR(Client Side Rendering)
특징
Client Side Rendering 과정
- User가 웹사이트에 요청을 보냄
- *CDN이 html 파일과 JS에 접근할 수 있는 링크를 클라이언트로 보냄(엔드유저와 물리적으로 가까운 위치에서 사용자에게 콘텐츠를 제공할 수 있음)
- 클라이언트가 html과 JS를 다운 받는데 SSR과 달리 invisible 함.
- 브라우저가 js 다운
- js가 실행되고, 데이터를 위한 API호출 (user들은 placeholder를 볼 수 있음)
- 서버가 api로부터 요청에 응답
- api로부터 받아온 data로 placeholder를 채움 (interactable)
*CDN : CDN은 사용자 위치 등을 기준으로 콘텐츠를 엔드 유저에게 전송할 수 있는 분산 노드로 구성된 네트워크
브라우저가 react를 실행해서 js가 모두 다운로드 되고 실행되기 전까지 사용자는 invisible함
- csr은 react,vue 등의 SPA(Single Page Application)에서 쓰이는 기법임
장단점
장점
- 첫 페이지 로딩만 하면, 사이트의 다른 곳으로 이동하는 식의 동작을 할 때 필요한 데이터만 갱신하면 되기 때문에 ssr에 비해 서버부하가 덜하다는 장저이 있음
단점
- 번들된 js파일 다운로드로 첫 페이지 초기 로딩 시간, 즉 진입 속도는 느릴 수 있음(초기 진입 속도 문제는 실무에서 code splitting 이라는 기능으로 해결하기도 한다)
- 초기에 html 데이터가 없다보니 검색 봇이 해당 페이지를 빈페이지로 착각하여 SEO에 취약(구글 제외, 구글 검색 봇은 똑똑해!)
그리고 Next.js (두 렌더링 동작방식의 단물만 빼오자)
- Next.js는 첫 페이지는 ssr 방식을 차용해 seo 문제를 해결하고 다음 페이지는 csr 방식을 적용해 필요한 데이터 부분만 갱신해 서버의 부하를 줄인 것이다.
- Next.js 는 리액트의 SSR을 쉽게 구현해주는 프레임워크
'CS 공부 - front' 카테고리의 다른 글
[JS] 동기 처리와 비동기 처리 (0) | 2023.02.02 |
---|---|
[JS] 콜백 함수 (0) | 2023.02.02 |
[JS]변수 선언의 실행 시점과 변수 호이스팅 (0) | 2023.01.31 |
[웹] cors, Cross-origin resource sharing (0) | 2023.01.29 |
[웹]쿠키, 세션, 로컬스토리지, 세션스토리지 그리고 JWT (0) | 2023.01.26 |