웹 개발 관련 vue/react 나 nuxt 를 보다보면 렌더링에 대한 이야기가 나오는데,
앞에서 nuxt3 와 vue3 를 비교할 때도 렌더링에 차이가 있다고 해서..
렌더링과 관련된 용어들에 대해서 chatGPT 에게 요청했습니다.
SSR, SSG, ISR, CSR 와 SEO 가 뭔지 자세히 설명해줘
웹 개발에서 자주 나오는 SSR, SSG, ISR, CSR은 웹 페이지가 렌더링되는 방식을 의미해.
각 방식은 SEO(검색 엔진 최적화)에도 영향을 미치니, 함께 알아보자! 🚀
1️⃣ SSR (Server-Side Rendering) - 서버 사이드 렌더링
✅ 서버에서 HTML을 완성한 후 클라이언트에 전달하는 방식
✅ 페이지 요청 시 서버에서 HTML을 생성하여 반환
✅ 검색 엔진(SEO) 최적화에 유리
🔹 동작 방식
- 사용자가 페이지를 요청
- 서버가 해당 페이지의 데이터를 가져와 완전한 HTML을 생성
- 완전한 HTML이 브라우저로 전송됨
- 브라우저가 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을 미리 생성하여 저장하고, 요청 시 빠르게 제공하는 방식
✅ 블로그, 문서 사이트, 마케팅 페이지 등에 최적
🔹 동작 방식
- 프로젝트를 빌드할 때 모든 HTML 파일을 미리 생성
- 사용자가 요청하면 미리 생성된 HTML을 바로 제공
- 필요하면 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의 한계를 보완한 방식
✅ 정적 페이지지만 일정 시간이 지나면 새로운 데이터를 반영할 수 있음
🔹 동작 방식
- 초기 페이지는 SSG처럼 미리 생성
- 특정 시간(interval)이 지나면 서버에서 새로운 HTML을 다시 생성하여 갱신
- 사용자는 최신 데이터가 반영된 정적 페이지를 볼 수 있음
🔹 장점
✅ 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)에서 기본적으로 사용하는 방식
🔹 동작 방식
- 처음에는 빈 HTML 파일과 JS 파일만 브라우저로 전송
- JS가 실행되면서 API 요청을 보내 데이터를 가져옴
- 데이터를 받아와 화면을 동적으로 구성
🔹 장점
✅ 서버 부하가 적음 (서버는 정적인 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에 영향을 주는 요소
- 페이지 구조 → HTML이 미리 생성되어 있으면 SEO에 유리함 (SSR, SSG, ISR)
- 메타 태그 (Meta Tags) → <title>, <meta name="description"> 설정 필요
- 속도 (Page Speed) → 로딩이 빠를수록 SEO 점수 향상
- 링크 (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 |