pile·
프론트엔드·vercel-blogVercel Blog·

ISR: A flexible way to cache dynamic content

Incremental Static Regeneration(ISR)은 정적 생성의 성능과 동적 콘텐츠의 신선도를 동시에 달성하는 캐싱 전략이다. time-based/on-demand/tag-based 세 가지 전략과 Next.js·SvelteKit·Nuxt·Astro·Remix의 프레임워크별 구현 방식을 비교하고, 실제 사례를 통해 각 트레이드오프를 구체적으로 설명한다.

핵심 포인트
  • stale-while-revalidate 패턴: 캐시 만료 후에도 즉시 이전 버전 제공하고 백그라운드에서 갱신
  • Time-based ISR: 고정 주기 기반 재생성, 트래픽 없으면 재생성 지연 가능
  • On-demand ISR: CMS 퍼블리시·웹훅 이벤트 트리거로 즉각 재검증, 최신성 보장
  • Tag-based ISR(Next.js): 연관 페이지를 태그 묶음으로 동시 무효화해 일관성 유지
  • 프레임워크별 지원: Next.js(revalidatePath/revalidateTag), SvelteKit(entries), Nuxt(swr), Astro(revalidate)
상세 정리
  • ISR 핵심 아이디어: 빌드 시 전체 정적 생성 대신 첫 요청 시 생성 후 캐시·갱신 주기 반복
  • stale-while-revalidate: `Cache-Control: s-maxage, stale-while-revalidate` 헤더로 구현
  • Time-based: Next.js `revalidate` 옵션, 설정 초 경과 후 다음 요청에서 백그라운드 재생성
  • On-demand: `revalidatePath()`/`revalidateTag()` Server Action이나 API Route에서 호출
  • Tag-based: `fetch()` 또는 `unstable_cache`에 태그 부여 후 `revalidateTag(tag)`로 일괄 무효화
  • Washington Post 사례: 속보 기사를 on-demand ISR로 수초 내 갱신
  • Leonardo.ai 사례: ISR 도입으로 빌드 시간 10분 → 2분으로 단축
  • PPR(Partial Prerendering): Next.js 실험 기능으로 정적 shell과 동적 스트리밍 병합
  • SvelteKit: `entries` 함수로 사전 생성 경로 지정, CDN 캐시 헤더 직접 제어
  • Nuxt: `swr` 캐시 전략으로 ISR 동등 동작 구현, Astro는 `revalidate` 옵션으로 주기 설정
  • Remix: Response 헤더의 `Cache-Control`로 엣지 캐시 직접 제어
왜 읽나ISR의 세 가지 전략과 프레임워크별 구현 차이를 한 글에서 비교할 수 있어, 적합한 캐싱 전략 선택에 실질적인 판단 기준이 된다.
vercel-blog
Vercel Blog 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 프론트엔드·LINE EngineeringLINE Engineering·

    AI로 웹 엔지니어 없이 LINE 앱 안에서 그룹 영상 통화 서비스 만들기

    LINE Planet 팀의 PM과 Android 엔지니어 두 명이 웹 전문 엔지니어 없이 LINE 앱 내에서 그룹 영상 통화 서비스를 개발한 과정을 다룬다. LIFF(LINE Front-end Framework)와 LINE Planet SDK를 활용해 React/Vite 기반 웹 앱을 구성했고, Firebase Cloud Functions로 별도 서버 인프라 없이 구현을 완료했다.

    #react#webrtc#firebase+2
  2. 프론트엔드·vercel-blogVercel Blog·

    Vercel과 Shopify의 Hydrogen 전면 재설계

    Vercel과 Shopify가 Hydrogen을 오픈소스·런타임 무관 프레임워크로 전면 재설계했다. 기존 Hydrogen은 빠른 헤드리스 스토어프런트 배포를 지원했지만 플랫폼 종속성이 있었고, 새 버전은 Svelte, Nuxt, Next.js 등 어느 JavaScript 프레임워크에서도 동작한다. 3레이어 아키텍처(코어/클라이언트/서버)로 재구성하면서 각 레이어가 명확한 역할을 분담한다.

    #react#nextjs#i18n+2
  3. 프론트엔드·토스 SLASH토스 SLASH·

    es-toolkit: 사내 소형 라이브러리에서 글로벌 프로젝트로

    토스 프론트엔드 팀이 사내 공유 유틸리티 라이브러리를 발전시켜 만든 es-toolkit이 주간 npm 다운로드 2,000만 건을 넘기며 글로벌 오픈소스 프로젝트로 자리 잡은 과정을 다룬다. lodash의 구조적 한계를 넘어 현대 웹 개발 환경에 최적화된 유틸리티 라이브러리를 처음부터 설계한 경험을 정리한다.

    #lodash#open-source#tree-shaking+2