๊ธฐ๋ณธ ๊ตฌ์กฐ
cacheControlHandler
๊ฐ ์์ฒญ์ ๋ํด Cache-Control ํค๋๋ฅผ ๋์ ์ผ๋ก ์์ฑํ๋ ํจ์์ ๋๋ค. ํ์ :(req: CacheControlRequest) => string | undefined
์์ฒญ ํ์
type:"assets"- ์ ์ ํ์ผ (JS, CSS, ์ด๋ฏธ์ง ๋ฑ)"api"- API ์๋ํฌ์ธํธ"ssr"- SSR ํ์ด์ง"csr"- CSR ์ง์ ์ (index.html)
GET, POST, PUT, DELETE ๋ฑ)
path: ์์ฒญ ๊ฒฝ๋ก (/api/user/list, /assets/main.js ๋ฑ)
CachePresets
Sonamu๊ฐ ์ ๊ณตํ๋ ์ฌ์ ์ ์๋ ์บ์ฑ ์ ๋ต์ ๋๋ค.์ฌ์ฉ ๊ฐ๋ฅํ Presets
CachePresets.noCache- ํญ์ ์๋ณธ ์๋ฒ์์ ์ต์ ๋ฒ์ ํ์ธ
- ์ฉ๋: ์ค์๊ฐ ๋ฐ์ดํฐ, ์ธ์ฆ์ด ํ์ํ API
- 1๋ถ๊ฐ ์บ์
- ์ฉ๋: ์์ฃผ ๋ณ๊ฒฝ๋๋ ๋ฐ์ดํฐ, CSR ์ง์ ์
- 5๋ถ๊ฐ ์บ์
- ์ฉ๋: ๋ณดํต ์ฃผ๊ธฐ๋ก ๋ณ๊ฒฝ๋๋ ๋ฐ์ดํฐ
- 1์๊ฐ ์บ์
- ์ฉ๋: ๊ฑฐ์ ๋ณ๊ฒฝ๋์ง ์๋ ์ ์ ๋ฐ์ดํฐ
- 1๋ ๊ฐ ์บ์, ๋ณ๊ฒฝ๋์ง ์์
- ์ฉ๋: ํด์๊ฐ ํฌํจ๋ ๋น๋ ํ์ผ
- 10์ด๊ฐ ์บ์, ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๊ฐฑ์
- ์ฉ๋: SSR ํ์ด์ง
๊ธฐ๋ณธ ์์
๋จ์ ์ค์
Assets ์ธ๋ถํ
ํด์๊ฐ ํฌํจ๋ ํ์ผ์ ์๊ตฌ ์บ์, ๊ทธ ์ธ๋ ์ผ๋ฐ ์บ์:API ๊ฒฝ๋ก๋ณ ์บ์ฑ
GET ์์ฒญ๋ง ์ ํ์ ์ผ๋ก ์บ์:์ค์ ์์
ํ์ค ์น ์ฑ
CDN ์ต์ ํ
๊ฐ๋ฐ vs ํ๋ก๋์
์ปค์คํ Cache-Control
Preset์ด ์๋ ์ง์ ํค๋ ๊ฐ์ ๋ฐํํ ์๋ ์์ต๋๋ค:Cache-Control ์ดํดํ๊ธฐ
์ฃผ์ ๋๋ ํฐ๋ธ
public- CDN๊ณผ ์ค๊ฐ ํ๋ก์์์๋ ์บ์ ๊ฐ๋ฅ
- ์ ์ ํ์ผ, ๊ณต๊ฐ API์ ์ ํฉ
- ๋ธ๋ผ์ฐ์ ๋ง ์บ์ ๊ฐ๋ฅ
- ๊ฐ์ธํ๋ ๋ฐ์ดํฐ์ ์ ํฉ
- ์บ์๋ ํ๋ ๋งค๋ฒ ์๋ณธ ๊ฒ์ฆ ํ์
- ์กฐ๊ฑด๋ถ ์์ฒญ (304 Not Modified) ๊ฐ๋ฅ
- ์ด๋์๋ ์บ์ํ์ง ์์
- ๋ฏผ๊ฐํ ๋ฐ์ดํฐ์ ์ฌ์ฉ
- N์ด ๋์ ์ ์ ํ(fresh) ์ํ
- ์ด ๊ธฐ๊ฐ ๋์์ ์ฌ๊ฒ์ฆ ์์ด ์บ์ ์ฌ์ฉ
- ์ ๋ ๋ณ๊ฒฝ๋์ง ์์
- ๋ธ๋ผ์ฐ์ ๊ฐ ์ฌ๊ฒ์ฆ์ ๊ฑด๋๋
- ํด์ ๊ธฐ๋ฐ ํ์ผ์ ์ต์
- ๋ง๋ฃ ํ N์ด ๋์ stale ๋ฒ์ ๋ฐํ
- ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๊ฐฑ์
- SSR ํ์ด์ง์ ์ ์ฉ
์์ ์กฐํฉ
undefined ๋ฐํ
ํค๋๋ฅผ ์ค์ ํ์ง ์์ผ๋ ค๋ฉดundefined๋ฅผ ๋ฐํํฉ๋๋ค:
์ฃผ์์ฌํญ
1. ์ธ์ฆ์ด ํ์ํ API
2. POST/PUT/DELETE๋ ์บ์ ์ ํจ
3. ํด์ ๊ธฐ๋ฐ ํ์ผ ๊ฐ์ง
๋ค์ ๋จ๊ณ
Cache-Control ์ค์ ์ ์๋ฃํ๋ค๋ฉด:- cache - ์๋ฒ ์ฌ์ด๋ ์บ์ฑ (BentoCache)
- compress - ์๋ต ์์ถ ์ค์
- advanced-features/ssr - SSR์์ Cache-Control ํ์ฉ