Skip to main content
SonamuλŠ” 자주 μ‚¬μš©ν•˜λŠ” Cache-Control νŒ¨ν„΄μ„ CachePresets으둜 μ œκ³΅ν•©λ‹ˆλ‹€. 직접 섀정을 μž‘μ„±ν•˜λŠ” λŒ€μ‹  프리셋을 μ‚¬μš©ν•˜λ©΄ μΌκ΄€λ˜κ³  κ²€μ¦λœ μΊμ‹œ μ „λž΅μ„ μ‰½κ²Œ μ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

CachePresets κ°œμš”

전체 프리셋 λͺ©λ‘

noStore

μΊμ‹œ μ €μž₯ κΈˆμ§€

noCache

맀번 μž¬κ²€μ¦

shortLived

1λΆ„ μΊμ‹œ

ssr

SSR μ΅œμ ν™” (10초 + SWR)

mediumLived

5λΆ„ μΊμ‹œ

longLived

1μ‹œκ°„ μΊμ‹œ

immutable

영ꡬ μΊμ‹œ (정적 파일)

private

κ°œμΈν™” 데이터

프리셋 상세

noStore

μΊμ‹œ μ €μž₯을 μ™„μ „νžˆ κΈˆμ§€ν•©λ‹ˆλ‹€.

noCache

μΊμ‹œλŠ” μ €μž₯ν•˜λ˜ 맀번 μž¬κ²€μ¦ν•©λ‹ˆλ‹€.
no-cache의 μž₯점:

shortLived

1λΆ„ μΊμ‹œ - 자주 λ³€κ²½λ˜λŠ” 데이터에 μ ν•©ν•©λ‹ˆλ‹€.

ssr

SSR νŽ˜μ΄μ§€ μ΅œμ ν™” - 10초 μΊμ‹œ + Stale-While-Revalidate 30초

mediumLived

5λΆ„ μΊμ‹œ - 거의 λ³€κ²½λ˜μ§€ μ•ŠλŠ” 데이터에 μ ν•©ν•©λ‹ˆλ‹€.

longLived

1μ‹œκ°„ μΊμ‹œ - 정적 컨텐츠에 μ ν•©ν•©λ‹ˆλ‹€.

immutable

영ꡬ μΊμ‹œ - ν•΄μ‹œκ°€ ν¬ν•¨λœ 정적 파일용
immutable의 μž₯점:
  • μž¬κ²€μ¦ 없이 μΊμ‹œλ§Œ μ‚¬μš© (κ°€μž₯ 빠름)
  • 파일이 λ³€κ²½λ˜λ©΄ μƒˆ ν•΄μ‹œ β†’ μƒˆ 파일λͺ… β†’ μžλ™ μΊμ‹œ κ°±μ‹ 

private

κ°œμΈν™” 데이터 - μ‚¬μš©μžλ³„λ‘œ λ‹€λ₯Έ 응닡
private vs public:
  • private: λΈŒλΌμš°μ €μ—λ§Œ 캐싱 (CDNμ—λŠ” μ•ˆ 됨)
  • public: λͺ¨λ“  μΊμ‹œ(λΈŒλΌμš°μ € + CDN)에 캐싱

프리셋 λΉ„κ΅ν‘œ

μ»€μŠ€ν…€ μ„€μ •

프리셋이 λ§žμ§€ μ•ŠμœΌλ©΄ 직접 섀정을 μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ „μ—­ ν•Έλ“€λŸ¬

λͺ¨λ“  μš”μ²­μ— λŒ€ν•΄ λ™μ μœΌλ‘œ Cache-Control을 μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ‹€μ „ ν™œμš©

API별 μ „λž΅

SSR νŽ˜μ΄μ§€

μ£Όμ˜μ‚¬ν•­

프리셋 μ‚¬μš© μ‹œ μ£Όμ˜μ‚¬ν•­:
  1. 프리셋은 좜발점: 상황에 맞게 μ»€μŠ€ν„°λ§ˆμ΄μ§• ν•„μš”
  2. GET만 캐싱: POST, PUT, DELETEλŠ” noStore μ‚¬μš©
  3. 개인 λ°μ΄ν„°λŠ” private: CDN 캐싱 λ°©μ§€
  4. immutable은 ν•΄μ‹œ 파일만: 파일λͺ…이 λ°”λ€Œμ–΄μ•Ό 갱신됨

λ‹€μŒ 단계

Cache-Controlμ΄λž€?

HTTP 캐싱 κΈ°λ³Έ κ°œλ…

APIμ—μ„œ μ‚¬μš©ν•˜κΈ°

@api λ°μ½”λ ˆμ΄ν„°μ— 적용

SSRμ—μ„œ μ‚¬μš©ν•˜κΈ°

SSR νŽ˜μ΄μ§€μ— 적용