웹페이지 렌더링 방식 (CSR, SSR, SSG)

swim·2024년 9월 13일

렌더링이란?

  • HTML, CSS, JS 등 개발자가 작성한 문서들을 서버에서 응답받아 브라우저가 화면에 그려주는 동작
  • 각각 브라우저마다 해당 엔진의 종류는 다를 수 있다

CSR : 클라이언트 사이드 렌더링

  • 클라이언트(브라우저) 사이드에서 렌더링을 책임지는 방식이다
  • 최초의 HTML파일을 받는 것을 제외하고 페이지 렌더링을 위한 별도의 HTTP 통신을 할 필요가 없다.
  • 따라서 서버의 요청없이 클라이언트에서 라우팅을 담당하기 때문에 후속 페이지 로드 시간이 훨신 빠르고 부드럽다
  • 서버는 오직 Ajax를 통해 필요한 데이터를 주고 받는 역할만 수행한다.
  • 자바스크립트의 번들의 크기의 영향을 많이 받기 때문에 코드분할을 고려해야한다.

동작과정

  1. 사용자가 웹사이트에 접속하면 서버는 빈 HTML과 JavaScript 파일을 보낸다
  2. 브라우저가 JavaScript를 로드하고 실행한다
  3. JavaScript가 동적으로 HTML을 생성하고, 이를 브라우저에 표시한다
  4. 추가 페이지 요청 시, 전체 페이지를 다시 로드하는 대신 필요한 데이터만 서버에서 받아와서 해당 부분만 업데이트한다

장점

  • 빠른 인터랙션 제공: 초기 로딩 후, 필요한 데이터만 서버에서 가져와 동적으로 페이지를 업데이트하기 때문에 추가 페이지 로딩이 없다 -> 이로 인해 사용자와의 인터랙션이 빠르게 이루어진다
  • 서버 부하 감소: 전체 페이지를 매번 새로 렌더링 하지 않고, 변화가 있는 부분만 업데이트하므로 서버에 부담을 덜어준다

단점

  • 초기 로딩 속도 느림: 브라우저가 JavaScript를 로드하고 실행하는 과정이 필요하므로, 이 과정으로 인해 초기 로딩 속도가 느릴 수 있다.
  • SEO 취약: 브라우저가 JavaScript를 실행하여 동적으로 만드는데, 이 과정이 실행되기 전에는 빈 HTML이 먼저 화면에 보이게 됩니다. 이 때문에 웹 크롤러가 페이지의 내용을 제대로 인식하지 못하여, 검색 엔진 최적화(SEO)에 취약할 수 있습니다.

적합한 상황

  • 사용자와의 상호작용이 많은 웹사이트에 적합하다
  • 예를 들어, 대시보드, 어드민 페이지와 같은 곳에서 사용자의 입력에 따라 화면이 동적으로 변하는 경우와 SEO가 크게 중요하지 않은 경우에 활용할 수 있다

SSR : 서버 사이드 렌더링

  • 브라우저가 서버에 요청하면 서버가 필요한 데이터로 HTML을 구성하여 브라우저에 전송하고 브라우저에서 응답받은 HTML을 렌더링하는 방식이다

동작과정

  1. 사용자가 웹사이트에 접속하면 서버에서 해당 페이지에 필요한 HTML을 생성합니다.
  2. 서버는 생성된 HTML을 브라우저로 보냅니다.
  3. 브라우저는 받은 HTML을 표시합니다.
  4. 추가 페이지 요청 시, 해당 페이지에 대한 HTML을 다시 서버에서 생성하여 보냅니다.

장점

  • 빠른 초기 페이지 로딩: 렌더링이 준비된 HTML 파일을 브라우저에서 로드하기 때문에 첫 페이지 로딩이 빨라지는 이점이 있다.
  • SEO에 유리: 이미 만들어진 페이지를 검색엔진 크롤러가 요청에대한 응답을 받기 때문에 SEO에 친화적이다

단점

  • 서버 부하 증가 :서버에서 매번 페이지를 새로 렌더링하기 때문에 화면이 부드럽지 않다. (페이지 이동할때마다 새로고침 현상) 그리고 이 사항 때문에 서버 부하가 생길 수 있으며, 서버 비용 또한 많이 든다

적합한 상황

  • 동적 콘텐츠가 많은 웹사이트
  • 사용자의 요청에 따라 콘텐츠가 실시간으로 변경되어야 하는 경우, 서버에서 렌더링을 통해 항상 최신 상태의 웹 페이지를 제공할 수 있디
  • 예를 들어, 사용자 맞춤형 콘텐츠를 제공하는 웹사이트, 주식 정보와 같이 실시간으로 변경되는 데이터를 다루는 웹사이트

SSG : 정적 사이트 생성

  • SSR처럼 서버로부터 HTML을 받아오지만 HTML 파일 생성시점이 빌드타임 입니다.
  • 위 처럼 화면을 서버에서 미리 만들어서 전송해주는 기법

동작과정

  1. 빌드 시에 서버는 모든 가능한 요청에 대한 HTML을 미리 생성한다
  2. 사용자가 웹사이트에 접속하면, 서버는 미리 생성해 둔 HTML을 보낸다
  3. 브라우저는 받은 HTML을 표시한다
  4. 추가 페이지 요청 시, 미리 생성해 둔 해당 페이지의 HTML을 보낸다

장점

  • 빠른 로딩 속도: 모든 페이지가 빌드 시에 미리 생성되므로, 사용자가 요청 시에는 빠른 로딩 속도를 제공한다
  • 서버 부하 감소: 미리 생성된 HTML만 제공하므로, 서버 부하가 적다
  • SEO 친화적 : 이미 생성된 HTML 을 받기 때문이다

단점

  • 데이터 변경에 불편: 사이트의 데이터가 변경될 때마다 전체 사이트를 다시 빌드해야 한다

적합한 상황

내용이 자주 변경되지 않은 웹사이트에 적합하다

  • 예를 들어, 회사 소개, 제품 소개, FAQ 등과 같은 정보를 제공하는 사이트나, 개인 블로그와 같이 콘텐츠가 일정 시간 동안 고정되는 경우

0개의 댓글