CSR 컴포넌트인데 Static으로 빌드된다고?

ASO (in page route)

Rendering: Automatic Static Optimization
페이지 라우터일 때도 Automatic Static Optimization 이란 개념이 있었다.
CSR 컴포넌트여도 서버에 요청했을 때 해야하는 그러니까 “동적인 요소”가 없다면 static한 요소라고 판단한다.
그리고 build time에 static한 initial html을 뽑아낸다.
 
판단 기준은 prerendered 될 수 있는 지 이고, 다시말해 blocking data가 요구되는 지를 뜻한다.
CSR일 지라도 build time에 모두 데이터가 결정된 상태라면 이건 static 한 것이고, 따라서 초기 html을 만들 수 있다.
📌
on-demand 또는 per-request 가 있다면 blocking data가 있는 것. i.g. getServerSideProps, getInitialProps
 
Good to know: Statically generated pages are still reactive. Next.js will hydrate your application client-side to give it full interactivity.
CSR은 상호작용이 필요한 요소인 경우가 많은데, static 하게 빌드되면 문제가 되는 것이 아닐까?
이 부분은 하이드레이션을 통해 자바스크립트가 활성화 되며 상호작용이 활성화 된다.
따라서 걱정할 필요 없다.
 
불필요한 서버 연산을 줄이고, 초기 로딩 속도를 빠르게 하는 등 static의 이점을 챙길 수 있다.

Static and Dynamic

ASO 문서가 app route로 오면서 도큐먼트에서 사라졌다. 그 최적화 개념이 사라진 건 아니다.