정적 사이트 생성기는 보통 빌드할 때 모든 페이지를 만듭니다. 페이지가 열 장이면 문제가 없지만 수백 장이 되면 배포마다 Notion API를 수백 번 두드리게 됩니다. folionote는 메인 페이지만 빌드 시점에 만들고, 본문 페이지는 첫 요청이 들어올 때 만드는 지연 SSG를 씁니다.
메인 페이지는 SSG에
revalidate 600초, 즉 10분 ISR입니다. 본문은 첫 방문자가 조금 기다리고, 그 뒤로는 ISR 캐시에서 나갑니다. "새로 쓴 글의 첫 접속이 느리다"는 버그가 아니라 이 구조의 정상 동작입니다.이미지 쪽도 같은 사고방식입니다. Next의 이미지 변환은 첫 요청에서만 일어나고 그다음부터 캐시에서 나가는데, 기본 TTL이 짧으면 방문자마다 콜드 변환을 다시 겪습니다. Notion 이미지는 내용이 바뀌면 URL도 바뀌므로 낡은 이미지가 남을 위험 없이 TTL을 31일로 길게 잡았습니다.
옮기려다 접은 것
Cloudflare Workers로 옮기는 것을 실제로 시도했습니다. 두 가지가 걸려 접었습니다. 소셜 이미지를 만드는
next/og가 동작하지 않았고, 커버 이미지의 LQIP 블러 미리보기가 원리적으로 불가능했습니다. 측정 결과는 리포의 docs/cloudflare-migration.md에 남겨 뒀습니다.결론은 Vercel에 그대로 둔다는 것이었습니다. 옮겨서 얻는 것보다 잃는 것이 컸습니다. 이런 판단은 문서에 이유까지 적어 두는 편이 낫습니다. 반년 뒤에 같은 고민을 다시 하게 되기 때문입니다.

