Next.js 는 너가 너의 전체 사이트를 재빌드 할 필요 없이 특정한 정적인 경로들을 업데이트 할 수 있도록 한다. 재검증(ISR이라고 불리우는)은 수백만개의 페이지를 관리하는 동안에 정적인 장점들을 유지할 수 있도록 한다.
환경에서는 : 특정한 시간 간격으로 데이터들을 재검증한다.
요청시에 : 업데이트 같은 이벤트에 근거해서 데이터들을 재검증한다.
특정한 간격마다 캐시된 데이터를 재검증하기 위해서, 너는 리소스의 캐시 수명을 설정하기 위해 fetch() 함수 안에서 next.revalidate 옵션을 사용할 수 있다.
만약 너가 fetch 요청을 사용하지 않는 데이터(외부 패키지나 쿼리빌더같은)를 재검증하길 원한다면, 너는 route segment config를 사용할 수 있다.
- 빌드시에 정적으로 렌더되는 경로에서 요청이 만들어진다면, 처음에 캐시된 데이터를 보여준다.
- 60초 이전이나, 초기 요청후에 경로에 대한 어떠한 요청들이라도 캐시되고 동시에 일어난다.
- 60초 후에는, 다음 요청은 캐시된 데이터를 아직도 보여줄 것이다.
- Next.js 는 백그라우드에서 데이터의 재생성을 유도할 것이다.
- 경로가 성공적으로 생산한다면, Next.js는 캐시를 무효화하고, 업데이트된 경로를 보여줄 것이다. 만약 재생성에 실패한다면, 이전데이터는 여전히 변경되지 않는다.
만들어지지않은 라우트 segment에 대해 요청이 만들어진다면, Next.js는 동적으로 첫번째 요청에 대한 경로를 렌더할 것이다. 미래의 요청들은 캐시로부터 정적인 route segments들을 전달할 것이다.
기억해야할점: 너의 업스트림 데이터 제공자가 기본적으로 캐싱 기능을 활성화 했는지 확인해라. 너는 아마 비활성화가 필요 할수도 있고, 그렇지 않으면 ISR 캐시를 업데이트 하기위한 새로운 데이터를 가재검증에서 가져오지 못할 수도 있다. 캐싱은 Cache-Control 헤더를 반환할때 CDN에서 일어난다.
너가 만약 60초의 재검증 시간을 설정해놨다면, 모든 방문자들은 1분동안 너의 사이트의 똑같은 생성된 버전을 보게 될 것이다. 캐시를 무효화하는 유일한 방법은 어떤 사용자가 1분후에 페이지를 방문했을때 뿐이다. Next.js 12.2 버전부터는, 특정한 페이에 대한 Next.js 캐시를 수동적으로 제거하기 위해 요청시 ISR 기능을 지원한다. 이것은
- 너의 headless CMS의 컨텐츠가 업데이트 되거나 만들어질때 너의 사이트 업데이트를 더 쉽게 한다.
- 가격이나, 설명 카테고리, 리뷰들 같은 전자상거래 메타데이터들을 변화시키기 쉽게한다.
첫째로, 너의 Next.js 어플리케이션에 의해서만 알수 있는 비밀 토큰을 만들어라. 이 토큰은 API 경로 재검증에 대한 승인되지 않은 접근을 막아준다. 너는 밑의 경로 구조를 따라서 라우트에 접근할 수 있다.
다음으로, 너의 어플리케이션에 환경변수를 등록해라.
마지막으로, API 경로 재검증을 만들어라.
알아둬야할점: 이제 너는 pages 경로 안에 API 경로를 만들 필요가 있다.
next run dev 동안 ISR 재검증 확인이 제대로 동작하는지 확인하기 위해서, 너는 production 빌드를 만들고, production서버를 만들 필요가 있다.
그러면, 너는 정적인 경로들이 성공적으로 재검증 되었는지 알수있다.
만약 재검증을 시도할때 에러가 나타난다면, 최근에 성공적으로 생성되었던 경로가 재사용 될것이다. 후속적인 요청에서 Next.js 는 재검증을 재시도할 것이다.