어떤 문제가 생길까
정적 생성 누락: 정상처럼 보이는 한 사례만으로는 동작 범위를 이해하기 어렵습니다. 대표 입력에서는 문제없다가 경계값, 느린 응답, 배포 직후처럼 조건이 달라질 때 결과가 바뀔 수 있습니다.
crawler가 찾지 못한 dynamic route는 prerender 목록에 없으면 정적 산출물이 만들어지지 않으므로 route discovery와 fallback을 확인해야 합니다.
원인을 이해하는 기준
Vue SSR, Nitro server, route middleware와 payload hydration으로 구성된 Nuxt 애플리케이션에서 어느 경계가 결과를 결정하는지 먼저 봅니다. 브라우저, CDN, framework, application과 DB cache를 각각 분리합니다. cache key, TTL, tag, 소유 instance와 변경 직후 허용할 stale 시간을 적어야 어디가 오래된 값을 주는지 알 수 있습니다.
| 구분 | 짧은 예시 |
|---|---|
| 기대 결과 | 정적 생성 누락: 정상 조건에서 사용자가 받아야 할 결과 |
| 실제 결과 | 같은 입력에서 처음 달라진 값·상태·오류 |
| 판별 자료 | 서버와 브라우저 로그, payload, route rule, hydration DOM과 Nitro 요청 시간을 분리한다 |
적용 예시와 확인
서버 전용 코드와 클라이언트 코드를 분리하고 데이터 키, 캐시와 runtimeConfig 공개 범위를 명시한다. 데이터 변경 지점에서 정확한 key나 tag를 무효화하고 사용자별 응답은 공유 cache에서 제외합니다. 다중 instance에서는 process local 무효화만으로 일관성이 생기지 않습니다.
대표 사례 하나, 값이 달라지는 경계 하나, 예상 가능한 실패 하나를 같은 순서로 확인합니다. 정적 생성과 SSR 산출물, hydration, route rule, cold start와 배포 preset별 동작을 검증한다. cold, hit, stale, mutation 직후, 여러 instance와 rolling deployment 조건에서 응답 header와 실제 값을 함께 확인합니다.
공식 문서와 적용 범위
문서의 기본값과 동작은 version에 따라 달라질 수 있습니다. 현재 runtime·framework version, 실제 입력과 요청 흐름에서 다시 확인합니다.