MPA(Multi-Page Application)는 전통적인 웹 애플리케이션 방식으로, 사용자가 새로운 페이지로 이동할 때마다 서버에서 HTML 파일을 받아오는 방식이다.
장점 | 단점 |
---|---|
SEO 친화적 | 페이지 이동 시 느린 속도 |
높은 확장성 | 복잡한 개발 |
보안 및 유지보수에서 불리함 |
SPA는 단일 HTML 페이지에서 콘텐츠를 동적으로 변경하는 방식으로, 모던 웹의 새로운 패러다임을 제시했다. React와 Angular, Vue.js 등에서 사용한다.
SPA의 특징
SPA의 장단점
장점 | 단점 |
---|---|
빠른 속도와 짧은 응답시간 | 느린 초기 구동 속도(TTV) |
모바일 친화적 | SEO에 불리함 |
개발 간소화 | 보안 문제 |
로컬 스토리지 캐시 |
Next.js는 React 기반의 프레임워크로, React SPA의 장점은 유지하면서 SEO와 성능 최적화를 위해 다양한 렌더링 방식을 제공한다.
CSR
은 React의 기본 렌더링 방식으로, 브라우저에서 JavaScript가 실행된 후 데이터를 가져와 UI를 동적으로 구성한다. 렌더링의 주체는 클라이언트
이다.
SSG
은 빌드 타임에 서버
에서 HTML을 생성하여 클라이언트에게 정적 파일로 제공하는 방식이다. 최초 빌드 시에만 생성되며, 사전에 미리 정적 페이지를 만들고 클라이언트(브라우저)가 해당 페이지를 요청하면 만들어져있는 페이지를 바로 제공한다.
ISR
은 SSG의 단점을 보완하기 위해 특정 시간 간격으로 정적 페이지를 갱신하는 방식으로, 정적 페이지를 먼저 보여주고 필요에 따라 서버에서 페이지를 재생성한다. 즉, SSG처럼 정적 페이지를 제공하지만, 설정한 주기만큼 페이지를 계속 생성해준다.
SSR
은 요청이 들어오면 서버에서 HTML을 완성한 후 클라이언트에 전달하는 방식으로, SSG, ISR처럼 렌더링 주체가 서버
이다.
렌더링 방식 | SEO | 초기 로딩 속도 | 서버 부하 | 사용 예시 |
---|---|---|---|---|
CSR | 낮음 | 느림 | 낮음 | 대시보드, 사내 도구 |
SSR | 높음 | 보통 | 높음 | 뉴스 사이트, 로그인 필요 서비스 |
SSG | 높음 | 빠름 | 없음 | 블로그, 마케팅 페이지 |
ISR | 높음 | 빠름 | 낮음 | 상품 페이지, 자주 변경되는 콘텐츠 |
cache : force-cache
//fetch API
fetch("url", {
cache: "force-cache"
})
next: {revalidate: (n초) }
//fetch API
fetch("url", {
next: {
revalidate: 3, //3초마다 갱신
}
})
cache: "no-store"
//fetch API
fetch("url", {
cache: "no-store"
})
"use client"
1. 최상단에 "use client" 작성
2. useState, useEffect 같은 클라이언트 훅은 무조건 클라이언트 컴포넌트 안에서만 사용
MPA / SPA 참고 사이트 1
Next.js 렌더링 참고 사이트 1
Next.js 렌더링 참고 사이트 2