Next.js
Next.js 목록이 발행 직후 갱신되지 않았던 캐시 추적기
API 성공과 공개 목록 반영 사이의 캐시 지연을 추적한 기록입니다.
증상부터 재현했다
저장 API는 성공했는데 홈 목록에 새 글이 늦게 나타났다. 상세 URL은 바로 열려서 데이터 저장 실패로 단정하지 않고 캐시를 비교했다. 관리자 목록, 공개 홈, RSS를 각각 새로 요청하고 Cache-Control과 Age를 기록하니 읽기 화면마다 재검증 시점이 달랐다.
수정한 기준
관리자 목록은 저장 뒤 즉시 다시 가져오고, 공개 홈은 60초 지연을 허용했다. 모든 화면을 무조건 no-store로 바꾸지 않고 사용자가 기대하는 즉시성에 따라 나눴다.
const res = await fetch(`${origin}/api/posts?published=true`, {
next: { revalidate: 60 },
});
발행 직후에는 상세 URL에서 제목과 slug를 확인하고, 목록은 재검증 경로를 거치게 했다. 브라우저 hard reload만 반복하는 방식은 원인을 가릴 뿐이었다.
체크리스트
- POST 성공 코드와 생성 slug를 확인한다
- 목록과 상세의 캐시 정책을 비교한다
- RSS 갱신 지연도 확인한다
- 저장 성공과 공개 반영을 별도 계약으로 본다
캐시는 끄는 것보다 어디까지 늦어도 되는지 먼저 정하는 것이 덜 위험했다.