ISR은 빠른 캐시 응답 뒤에서 정적 페이지를 다시 만든다
사용자는 캐시된 페이지를 즉시 받고, 재검증 시간이 지난 요청은 백그라운드 재생성을 촉발한다. 다음 요청부터 새 HTML이 제공된다.
stale cache
시간이 지나도 사용자는 기존 페이지를 먼저 받는다.
background build
서버가 새 데이터를 읽고 HTML을 다시 만든다.
fresh again
업데이트된 캐시가 이후 요청의 기준이 된다.
요청 기준 타임라인
no blocking refresh초기 생성
빌드 시점에 중요한 경로를 SSG로 만든다.
첫 요청
캐시된 HTML을 빠르게 응답한다.
주기 만료
revalidate 기준을 넘으면 stale 상태가 된다.
뒤에서 재생성
사용자 응답을 막지 않고 캐시를 갱신한다.
다음 요청
새 정적 결과를 받는다.
revalidate: 60
60초마다 오래된 캐시를 새로 만든다.
상품, 게시글, 공개 목록처럼 적당한 최신성이 필요한 화면
revalidate: 0
캐시를 쓰지 않아 SSR처럼 동작한다.
항상 최신이어야 하는 데이터, 캐시 위험이 큰 화면
데이터 변경 이벤트로 캐시를 무효화한다.
관리자 수정, CMS 발행, 특정 경로 갱신
응답을 막지 않는다
stale 페이지를 먼저 주므로 빈 화면과 긴 대기를 피한다.
즉시 최신은 아니다
재검증 주기 안에서는 이전 데이터가 보일 수 있다.
대규모 경로에 맞다
모든 페이지를 매번 빌드하지 않아도 된다.
확인할 코드 위치
generateStaticParams에서 초기 생성 대상을 정한다.
fetch의 next.revalidate 값을 확인한다.
정적 성능과 데이터 최신성의 허용 범위를 먼저 정한다.