
특정 페이지의 유형을 강제로 Static or Dynamic 페이지로 설정
export const dynamic = 'force-dynamic'
auto
기본값, 아무것도 강제하지 않음
force-dynamic
페이지를 강제로 Dynamic 페이지로 설정
force-static
페이지를 강제로 Static 페이지로 설정
페이지 내부에서 사용한 동적함수는 undefined 이 반환되도록 자동 설정
검색 기능이 제대로 작동하지 않을 수 있다
error
페이지를 강제로 Static 페이지로 설정
Static으로 설정하면 안되는 이유가 있다면 (동적함수, 캐싱되지 않는 데이터 페칭) 빌드 오류를 발생
브라우저 측에 보관되는 캐시는 한 번 접속한 페이지의 레이아웃을 따로 보관해둔다
페이지 이동이 일어날 경우 공통된 레이아웃을 서버로 부터 다시 불러오지 않고
클라이언트 라우터 캐시에서 가져온다

// 📄 src/app/(with-searchbar)/search/loading.tsx
export default function Loading() {
return <div>Loading ...</div>;
}
데이터를 불러오는 속도가 너무 빠르게 때문에
강제로 데이터를 불러오는 과정을 지연 시켜서 확인해볼 수 있다
// 📄 src/util/delay.ts
export async function delay(ms: number) {
return new Promise((resolve) => {
setTimeout(() => {
resolve('');
}, ms);
});
}
await delay(1500) 코드 추가📄 src/app/(with-searchbar)/search/page.tsx
결과
동일한 경로만 스트리밍 되는 게 아니라
layout 파일처럼 해당하는 경로 아래에 있는 모든 페이지 컴포넌트들이 전부 스트리밍 되도록 설정된다
async 키워드가 붙어 비동기로 작동하도록 설정된 페이지 컴포넌트에만 스트리밍을 제공한다
page.tsx 파일에만 스트리밍을 적용할 수 있다
브라우저에서 쿼리스트링이 변경될 때에는 스트리밍이 트리거링되지 않는다