MPA (Multi-Page-Application)
/about → about.html
/profile → profile.html
원시적인 서버 사이드 렌더링 방식.
페이지 이동시나 렌더링 시 깜빡거려 유저 사용성 저하하는 경우가 있다.
이를 보완하기 위해서 CSR 방식의 React를 이용해서 SPA를 만들기 시작
React의 SPA 개념을 이용하게 되면서 더 이상 새로고침이나 깜빡거림 없이 유저 사용성이 개선되었으나, 단점도 있었다.
→ 자바스크립트 번들 사이즈가 커짐에 따라 초기 로딩 속도가 증가하는 것.
→ 이를 보완하기 위해서 Code Splitting 개념이 나왔다.
Code Spliting (Lazy-Loading)이란?
현재 꼭 필요한 곳에서만 자바스크립트 파일을 로딩하는 방식.
하나로 번들된 코드를 여러 코드나 컴포넌트로 분리해서, 지금 당장 필요한 코드가 아니라면 나중에 필요할 때 불러와서 사용할 수 있다.
문제점. SEO
검색 엔진에서 웹 사이트의 정보를 가져오기 위해서 사용하는 크롤링 봇은 방문하는 웹 사이트 HTML 정보를 읽고 데이터를 축적하는데, CSR 방식의 웹사이트의 경우 방문하는 시점에는 웹사이트의 정보가 없음.
방문 이후 Javascript를 통해서 현재 페이지에 내용이 나타나는 CSR 형식
→ 서버에서 렌더링해서 클라이언트에 곧바로 보내주는 SSR가 대두됌.
Javascript를 이용해서 HTML을 만드는 행위
Pre-rendering이란?
Client에 HTML이 이미 로드가 된 이후가 아닌, 이전에 Javascript를 이용해 HTML을 만드는 것을 말함.
Next.js는 기본적으로 모든 코드는 Pre-rendering 된다.
언제 HTML을 만드느냐에 따라서,
runtime(실행 시간)이란?
애플리케이션이 빌드 및 배포된 후 사용자의 요청에 대한 응답으로 애플리케이션이 실행되는 기간.
- Pages Router : 자동으로 정적으로 렌더링 된다.
- App Router : 기본적으로 서버 컴포넌트로 취급된다.
Client-Side Rendering
브라우저에서 HTML file을 로드하면, Javascript를 이용하여 rendering 하는 방식
Server-Side Rendering
브라우저에서 해당하는 페이지를 접속하면 ,그 순간 서버에서 html을 렌더링해서 전달해주는 방식
페이지를 요청할 때마다 렌더링하기 때문에 오래 걸림.
Static-Site Generation
SSR의 경우 페이지를 요청할 때마다 서버에서 렌더링.
정적인 페이지를 제공하려고 할 때는 그럴 필요없이 빌드할 때 렌더링하고 페이지를 요청할 때 이미 렌저링 된 페이지를 반환함.
Incremental Static Regeneration
SSG의 단점은, 컨텐츠가 업데이트 되면 제대로 된 정보를 보여줄 수 없다는 것.
이를 보완하기 위해서 일정 주기마다 페이지를 빌드시켜주는 ISR이라는 방식이 있습니다.
정리가 잘 되어있네요