--- category: Architecture tags: [auto-wikified, technical-documentation, architecture] title: Next.js Caching Architecture description: "Next." last_updated: 2026-05-04 --- # Next.js Caching Architecture ## πŸ“Œ Brief Summary Next.js의 캐싱 μ•„ν‚€ν…μ²˜λŠ” React μ„œλ²„ μ»΄ν¬λ„ŒνŠΈ(RSC) 및 μ„œλ²„ μ•‘μ…˜(Server Actions)κ³Ό κΈ΄λ°€ν•˜κ²Œ μ—°λ™λ˜μ–΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 데이터λ₯Ό μ„œλ²„μ— μ €μž₯ν•˜κ³  λ¬΄νš¨ν™”(Invalidate)ν•˜λŠ” λ©”μ»€λ‹ˆμ¦˜μž…λ‹ˆλ‹€ [1, 2]. κ°œλ°œμžλŠ” λ‹€μ–‘ν•œ 데이터λ₯Ό μ„œλ‘œ λ‹€λ₯Έ νƒœκ·Έ(Tag)둜 μΊμ‹œν•˜κ³ , 데이터가 μ—…λ°μ΄νŠΈλ  λ•Œ ν•΄λ‹Ή νƒœκ·Έλ₯Ό λ¬΄νš¨ν™”ν•˜λŠ” λ°©μ‹μœΌλ‘œ λ™μž‘μ„ μ œμ–΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [3]. 이λ₯Ό 톡해 무거운 λ°μ΄ν„°μ˜ μž¦μ€ μž¬μš”μ²­μ„ λ°©μ§€ν•˜κ³  λΉ λ₯Έ λ Œλ”λ§ μ„±λŠ₯을 ν™•λ³΄ν•˜λŠ” 것이 핡심 λͺ©μ μž…λ‹ˆλ‹€ [3, 4]. ## πŸ“– Core Content * **νƒœκ·Έ 기반 μΊμ‹œ λ¬΄νš¨ν™” (Cache Invalidation with Tags):** Next.jsμ—μ„œλŠ” 데이터λ₯Ό κ°€μ Έμ˜¬ λ•Œ κ°œλ³„ 데이터에 κ³ μœ ν•œ νƒœκ·Έλ₯Ό ν• λ‹Ήν•˜μ—¬ μΊμ‹œν•  수 μžˆμŠ΅λ‹ˆλ‹€ [3]. λ°μ΄ν„°μ˜ λ³€κ²½μ΄λ‚˜ μ—…λ°μ΄νŠΈκ°€ λ°œμƒν•˜λ©΄ μ„œλ²„ μ•‘μ…˜ λ‚΄μ—μ„œ `revalidateTag` ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬, νŠΉμ • νƒœκ·Έμ™€ μ—°κ²°λœ μΊμ‹œ 데이터λ₯Ό 방좜(eject)ν•˜λ„λ‘ μ§€μ‹œν•  수 μžˆμŠ΅λ‹ˆλ‹€ [2, 5]. * **RSC 트리 전체 λ¦¬λ Œλ”λ§:** `revalidateTag` APIλŠ” Next.jsμ—κ²Œ '무엇을 λ‹€μ‹œ λ‘œλ“œν• μ§€'λ₯Ό μ•Œλ €μ£ΌλŠ” 것이 μ•„λ‹ˆλΌ, 단지 'μΊμ‹œμ—μ„œ 무엇을 μ œκ±°ν• μ§€'λ§Œμ„ μ•Œλ €μ€λ‹ˆλ‹€ [5]. κ·Έ κ²°κ³Ό, 이 ν•¨μˆ˜κ°€ 호좜되면 Next.jsλŠ” ν˜„μž¬ νŽ˜μ΄μ§€μ˜ λͺ¨λ“  것을 λ‹€μ‹œ λ‘œλ“œν•΄μ•Ό ν•˜λ―€λ‘œ 전체 RSC νŠΈλ¦¬κ°€ λ¦¬λ Œλ”λ§λ©λ‹ˆλ‹€ [3, 5]. * **μΊμ‹œ 적쀑을 ν†΅ν•œ μ„±λŠ₯ λ°©μ–΄:** 전체 μ»΄ν¬λ„ŒνŠΈ νŠΈλ¦¬κ°€ λ¦¬λ Œλ”λ§λ˜λŠ” ꡬ쑰적 νŠΉμ„±μ—λ„ λΆˆκ΅¬ν•˜κ³ , μ„œλ²„μ— 데이터가 μ˜¬λ°”λ₯΄κ²Œ μΊμ‹œλ˜μ–΄ μžˆλ‹€λ©΄ μΊμ‹œλœ 데이터에 λŒ€ν•œ 후속 μš”μ²­λ“€μ€ 맀우 λΉ λ₯΄κ²Œ μ‹€ν–‰λ˜μ–΄ μ„±λŠ₯ μ €ν•˜λ₯Ό λ°©μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [3]. ## βš–οΈ Trade-offs & Caveats * **κ³Όλ„ν•œ 데이터 μž¬μš”μ²­ μœ„ν—˜μ„±:** `revalidateTag`λ₯Ό ν˜ΈμΆœν•˜μ—¬ μΊμ‹œλ₯Ό λ¬΄νš¨ν™”ν•˜λ©΄ 전체 μ»΄ν¬λ„ŒνŠΈ νŠΈλ¦¬κ°€ λ¦¬λ Œλ”λ§λ˜λ©΄μ„œ μ—°κ΄€λœ λͺ¨λ“  λ°μ΄ν„°μ˜ μž¬μš”μ²­μ΄ λ°œμƒν•©λ‹ˆλ‹€ [4, 5]. λ§Œμ•½ μ„œλ²„μ— λͺ¨λ“  데이터가 적절히 μΊμ‹œλ˜μ–΄ μžˆμ§€ μ•Šλ‹€λ©΄, 였히렀 `react-query`와 같은 ν΄λΌμ΄μ–ΈνŠΈ μΈ‘ μƒνƒœ 관리 도ꡬ가 ν•„μš”λ‘œ ν•˜λŠ” 두 번의 왕볡 μ‹œκ°„(Round trip)보닀 단일 μ„œλ²„ 왕볡 μ‹œκ°„μ΄ 더 였래 κ±Έλ¦¬λŠ” μ‹¬κ°ν•œ μ„±λŠ₯ μ €ν•˜λ₯Ό μ΄ˆλž˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [4]. * **μ„œλ²„ μ•‘μ…˜μ˜ 직렬 μ‹€ν–‰ 병λͺ©:** 데이터 μ—…λ°μ΄νŠΈμ™€ μΊμ‹œ λ¬΄νš¨ν™”μ— μ‚¬μš©λ˜λŠ” μ„œλ²„ μ•‘μ…˜μ€ ν•œ λ²ˆμ— ν•˜λ‚˜λ§Œ 싀행될 수 μžˆλŠ” 직렬(Serial) μ‹€ν–‰ μ œμ•½μ„ κ°€μ§‘λ‹ˆλ‹€ [6]. λ„€νŠΈμ›Œν¬κ°€ λŠλ¦¬κ±°λ‚˜ 지연이 λ°œμƒν•  경우 μž‘μ—…λ“€μ΄ λŒ€κΈ°μ—΄(Queue)에 μŒ“μ΄κ²Œ λ˜μ–΄ μ‚¬μš©μž κ²½ν—˜μ„ 크게 훼손할 수 μžˆμŠ΅λ‹ˆλ‹€ [6]. * **캐싱 API의 μž¦μ€ λ³€κ²½κ³Ό 변동성:** μ†ŒμŠ€ 자료 μž‘μ„± μ‹œμ  κΈ°μ€€μœΌλ‘œ Next.jsλŠ” μ™„μ „νžˆ λ‹€λ₯Έ 캐싱 API와 기본값을 ν¬ν•¨ν•œ μƒˆλ‘œμš΄ 버전을 μΆœμ‹œν•˜λŠ” μ€‘μ΄μ—ˆμŠ΅λ‹ˆλ‹€ [1]. μ΄λŠ” 캐싱 μ•„ν‚€ν…μ²˜μ˜ μ„ΈλΆ€ λ™μž‘ λ°©μ‹μ΄λ‚˜ μ΅œμ ν™” μ „λž΅μ΄ 버전에 따라 κΈ‰κ²©νžˆ λ‹¬λΌμ§ˆ 수 μžˆλŠ” 기술적 λΆˆμ•ˆμ •μ„±μ„ λ‚΄ν¬ν•˜κ³  μžˆμŒμ„ μ˜λ―Έν•©λ‹ˆλ‹€ [1]. --- *Last updated: 2026-05-03*