CSR이란 Client-side Rendering(클라이언트 측 렌더링)의 약자로, JavaScript를 사용해 브라우저에 직접 페이지를 렌더링하는 방식입니다.
브라우저는 최초 렌더링 때 서버에 요청을 보내 내용이 빈 HTML과 JavaScript 번들을 다운로드하고 JavaScript를 실행해 빈 HTML에 화면을 구성합니다.
SPA는 기본적으로 렌더링 방식으로 CSR을 사용합니다. CSR은 SEO를 하는 데 어려움이 있고 초기 로딩 성능이 낮다는 단점이 있습니다. 이는 사용자의 유입률을 낮추고 이탈률을 높이는 요인이 될 수 있습니다.
CSR과 반대로 SSR은 서버에서 렌더링 준비가 완료된 HTML을 받아 브라우저에 렌더링하기 때문에 초기 로딩 속도가 빠르고 모든 데이터가 이미 HTML에 포함되어있기 때문에 SEO에 유리합니다. 따라서 SPA에서 초기 로딩에는 SSR 렌더링 방식을 사용하면 CSR의 초기 로딩 속도와 SEO 문제를 개선할 수 있습니다.
Next.js 프로젝트에서 yarn start
스크립트를 실행하면 next start
스크립트가 실행되고 next/cli/next-start.ts
코드가 실행됩니다. next-start.ts 코드 전문
next-start.ts
코드는 아래와 같은 작업을 수행합니다.
next build
script를 실행해 생성되는 .next
폴더가 없으면 에러를 발생시킵니다..next
폴더에 생성된 최적화된 코드를 실행합니다.startServer({
dir,
hostname: host,
port,
keepAliveTimeout,
})
.then(async (app) => {
const appUrl = `http://${app.hostname}:${app.port}`
Log.ready(`started server on ${host}:${app.port}, url: ${appUrl}`)
await app.prepare()
})
.catch((err) => {
console.error(err)
process.exit(1)
})
}