SSR, SSG, ISR, CSR 와 SEO

2025. 3. 20. 01:47·Front-end

웹 개발 관련 vue/react 나 nuxt 를 보다보면 렌더링에 대한 이야기가 나오는데,

앞에서 nuxt3 와 vue3 를 비교할 때도 렌더링에 차이가 있다고 해서..

렌더링과 관련된 용어들에 대해서 chatGPT 에게 요청했습니다.

 

 

SSR, SSG, ISR, CSR 와 SEO 가 뭔지 자세히 설명해줘
 

 

 

웹 개발에서 자주 나오는 SSR, SSG, ISR, CSR은 웹 페이지가 렌더링되는 방식을 의미해.
각 방식은 SEO(검색 엔진 최적화)에도 영향을 미치니, 함께 알아보자! 🚀


1️⃣ SSR (Server-Side Rendering) - 서버 사이드 렌더링

✅ 서버에서 HTML을 완성한 후 클라이언트에 전달하는 방식
✅ 페이지 요청 시 서버에서 HTML을 생성하여 반환
✅ 검색 엔진(SEO) 최적화에 유리

🔹 동작 방식

  1. 사용자가 페이지를 요청
  2. 서버가 해당 페이지의 데이터를 가져와 완전한 HTML을 생성
  3. 완전한 HTML이 브라우저로 전송됨
  4. 브라우저가 HTML을 렌더링하여 사용자에게 보여줌

🔹 장점
✅ SEO 최적화 (검색 엔진이 완전한 HTML을 쉽게 크롤링할 수 있음)
✅ 초기 로딩 속도 빠름 (첫 화면을 서버에서 완성해서 보내줌)

🔹 단점
🚫 서버 부하가 큼 (매 요청마다 HTML을 새로 생성해야 함)
🚫 사용자와의 인터랙션이 많은 페이지에서는 비효율적

🔹 SSR 예제 (Nuxt 3)

const { data } = await useFetch("<a href=https://api.example.com/posts>https://api.example.com/posts</a>");

Blog Posts

  • {{ post.title }}

📌 useFetch()를 사용하면 서버에서 데이터를 미리 가져와 SSR로 렌더링 가능!


2️⃣ SSG (Static Site Generation) - 정적 사이트 생성

✅ 빌드 시 HTML을 미리 생성하여 저장하고, 요청 시 빠르게 제공하는 방식
✅ 블로그, 문서 사이트, 마케팅 페이지 등에 최적

🔹 동작 방식

  1. 프로젝트를 빌드할 때 모든 HTML 파일을 미리 생성
  2. 사용자가 요청하면 미리 생성된 HTML을 바로 제공
  3. 필요하면 JS로 데이터를 추가 로드 가능

🔹 장점
✅ SEO 최적화 (검색 엔진이 정적 HTML을 쉽게 읽을 수 있음)
✅ 성능이 뛰어남 (미리 생성된 HTML을 제공하므로 빠름)
✅ 서버 부하 적음 (서버에서 매번 HTML을 생성할 필요 없음)

🔹 단점
🚫 페이지가 많아질수록 빌드 시간이 오래 걸림
🚫 실시간 데이터가 필요한 사이트에는 적합하지 않음

🔹 SSG 예제 (Nuxt 3)

const { data } = await useFetch("<a href=https://api.example.com/posts>https://api.example.com/posts</a>");
definePageMeta({ prerender: true }); // 빌드 시 HTML을 미리 생성

📌 prerender 옵션을 추가하면 SSG로 HTML을 생성!


3️⃣ ISR (Incremental Static Regeneration) - 점진적 정적 재생성

✅ SSG의 한계를 보완한 방식
✅ 정적 페이지지만 일정 시간이 지나면 새로운 데이터를 반영할 수 있음

🔹 동작 방식

  1. 초기 페이지는 SSG처럼 미리 생성
  2. 특정 시간(interval)이 지나면 서버에서 새로운 HTML을 다시 생성하여 갱신
  3. 사용자는 최신 데이터가 반영된 정적 페이지를 볼 수 있음

🔹 장점
✅ SEO 최적화 (SSG처럼 미리 생성된 HTML을 제공)
✅ 실시간 데이터 반영 가능 (일정 시간마다 새로 업데이트됨)

🔹 단점
🚫 즉각적인 데이터 반영이 어려움 (업데이트 시간 간격 필요)
🚫 서버 부하는 SSG보다 크지만 SSR보다는 적음

🔹 ISR 예제 (Nuxt 3)

const { data } = await useFetch("<a href=https://api.example.com/posts>https://api.example.com/posts</a>");
definePageMeta({ revalidate: 60 }); // 60초마다 새로운 데이터로 갱신

📌 60초마다 데이터를 다시 가져와 HTML을 갱신하도록 설정!


4️⃣ CSR (Client-Side Rendering) - 클라이언트 사이드 렌더링

✅ HTML은 최소한의 정보만 포함하고, JavaScript가 실행된 후 데이터를 불러와 화면을 구성
✅ Vue, React 같은 SPA(Single Page Application)에서 기본적으로 사용하는 방식

🔹 동작 방식

  1. 처음에는 빈 HTML 파일과 JS 파일만 브라우저로 전송
  2. JS가 실행되면서 API 요청을 보내 데이터를 가져옴
  3. 데이터를 받아와 화면을 동적으로 구성

🔹 장점
✅ 서버 부하가 적음 (서버는 정적인 HTML과 JS만 제공하면 됨)
✅ 빠른 화면 전환 (페이지 이동 시 전체를 다시 로드할 필요 없음)

🔹 단점
🚫 SEO가 어렵다 (검색 엔진이 처음에는 빈 HTML을 받음)
🚫 초기 로딩 속도가 느릴 수 있음 (JS 실행 후 데이터 로딩이 필요)

🔹 CSR 예제 (Vue 3)

import { ref, onMounted } from "vue";

const posts = ref([]);

onMounted(async () => {
  const response = await fetch("<a href=https://api.example.com/posts>https://api.example.com/posts</a>");
  posts.value = await response.json();
});

Blog Posts

  • {{ post.title }}

📌 onMounted()에서 데이터를 가져오기 때문에 클라이언트에서 실행됨 → CSR!


5️⃣ SEO (Search Engine Optimization) - 검색 엔진 최적화

✅ SEO는 검색 엔진(Google, Bing, Naver 등)이 웹사이트를 잘 분석하고 노출할 수 있도록 하는 최적화 작업

🔹 SEO에 영향을 주는 요소

  1. 페이지 구조 → HTML이 미리 생성되어 있으면 SEO에 유리함 (SSR, SSG, ISR)
  2. 메타 태그 (Meta Tags) → <title>, <meta name="description"> 설정 필요
  3. 속도 (Page Speed) → 로딩이 빠를수록 SEO 점수 향상
  4. 링크 (Backlink, Internal Links) → 다른 사이트에서 많이 링크될수록 SEO 점수 상승

🔹 SEO 최적화 방법 (Nuxt 3)

<script setup>
useHead({
  title: "My Blog",
  meta: [{ name: "description", content: "This is my awesome blog!" }],
});
</script>

📌 Nuxt 3는 SSR, SSG 지원 → SEO에 유리!
📌 Vue 3는 기본적으로 CSR → SEO가 불리하므로 SSR이 필요할 수 있음!


✅ 정리: 어떤 방식이 좋을까?

렌더링 방식 SEO 초기 속도 실시간 데이터 서버 부하 대표적인 사용 예

SSR ✅ 좋음 ✅ 빠름 ✅ 실시간 가능 🚫 높음 블로그, 뉴스, 쇼핑몰
SSG ✅ 아주 좋음 ✅ 빠름 🚫 실시간 불가 ✅ 낮음 정적 사이트, 문서
ISR ✅ 좋음 ✅ 빠름 ⚠️ 부분 업데이트 가능 ⚠️ 중간 콘텐츠 업데이트가 필요한 사이트
CSR 🚫 나쁨 🚫 느림 ✅ 실시간 가능 ✅ 낮음 대시보드, 내부 서비스

💡 결론

✅ SEO 중요? → SSR, SSG, ISR 추천
✅ 실시간 데이터 필요? → SSR, CSR 추천
✅ 속도 & 성능? → SSG, ISR 추천

 

 

개인적으로 공부할 때는 그냥 vue3/react 를 보면될것 같은데, 왜 갑자기 nuxt3 에 꽃혔을까,,,

저작자표시 (새창열림)

'Front-end' 카테고리의 다른 글

통계영역에 대한 정리  (0) 2025.05.03
조회 조건을 선택할 때 실행되는 것과 엑셀 파일 업로드  (0) 2025.05.03
Nuxt3 와 Vue3 비교  (0) 2025.03.20
React 에서 상태 관리 방법 목록  (0) 2025.03.11
Card 라는 component 를 만들기  (0) 2025.02.28
'Front-end' 카테고리의 다른 글
  • 통계영역에 대한 정리
  • 조회 조건을 선택할 때 실행되는 것과 엑셀 파일 업로드
  • Nuxt3 와 Vue3 비교
  • React 에서 상태 관리 방법 목록
크레비즈
크레비즈
  • 크레비즈
    크레비즈 커뮤니티
    크레비즈
  • 전체
    오늘
    어제
    • 분류 전체보기 (68)
      • Front-end (13)
      • Back-end (7)
      • Python (11)
      • AI 공부 (7)
      • Mobile (4)
      • Script (4)
      • 인프라 (5)
      • 참고할 내용 (12)
      • reference page (0)
      • Project (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • Spring: the source for modern java
  • 공지사항

    • 크레비즈 커뮤니티
  • 인기 글

  • 태그

    딥러닝
    windsurf
    claude sonnet
    CNN
    Refresh Token
    Claude
    vuejs
    ChatGPT
    Access Token
    claude 3.7 sonnet
    Gemini
    PYTHON
    fastapi
    vue
    토큰
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
크레비즈
SSR, SSG, ISR, CSR 와 SEO
상단으로

티스토리툴바