[HTTP] Cache-Control ํค๋
TL;DR
Cache-Control์ ๋ธ๋ผ์ฐ์ ์ ์ค๊ฐ ์๋ฒ(Proxy, CDN ๋ฑ)๊ฐ ์ด๋ค ๋ฐฉ์์ผ๋ก ์๋ต์ ์บ์ฑํ ์ง ์ง์ ํ๋ ํค๋๋ก, ์บ์ฑ ๊ฐ๋ฅ ์ฌ๋ถ(public
, private
, no-store
), ์บ์ ์ ํจ ๊ธฐ๊ฐ(max-age
), ์ฌ๊ฒ์ฆ ๋ฐฉ์(no-cache
, must-revalidate
) ๋ฑ์ ์ค์ ํ ์ ์๋ค.
์ ์ ์ธ ๋ฆฌ์์ค
์ ๋ณํ์ง ์๋ ์ ์ ์ธ ๋ฆฌ์์ค๋ ์ฅ๊ธฐ๊ฐ ์บ์
Cache-Control: public, max-age=31536000, immutable
public
: ๋ธ๋ผ์ฐ์ ์ ์ค๊ฐ ์๋ฒ(ํ๋ก์, CDN ๋ฑ) ๋ชจ๋ ์๋ต์ ์บ์ฑํ๊ณ ์ฌ์ฌ์ฉํ ์ ์๋๋ก ํ์ฉmax-age=31536000
: ์บ์ ์์ฑ ํ 1๋ (31,536,000์ด) ๋์ fresh ์ํ ์ ์งimmutable
: ์ ํจ ๊ธฐ๊ฐ ๋ด ๋ฆฌ์์ค๊ฐ ๋ณ๊ฒฝ๋์ง ์์์ ๋ํ๋ด๋ฉฐ, ํด๋น ๊ธฐ๊ฐ ๋์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ฌ๊ฒ์ฆ ์์ฒญ์ ๋ณด๋ด์ง ์๋๋ก ์ง์.
๋์ ์ธ ๋ฆฌ์์ค
๋์ ์ธ ๋ฆฌ์์ค๋ ํญ์ ์ต์ ์ํ๋ฅผ ์ ์งํ ์ ์๋๋ก ๋งค๋ฒ ์๋ฒ์ ์ฌ๊ฒ์ฆ
Cache-Control: no-cache, must-revalidate
no-cache
: ์บ์ ๋ฐ์ดํฐ ์ฌ์ฉ ์ ๋งค๋ฒ ์๋ณธ ์๋ฒ์ ์ฌ๊ฒ์ฆmust-revalidate
: ๋ง๋ฃ๋ ์บ์ ๋ฐ์ดํฐ๋ ์๋ณธ ์๋ฒ ์ฌ๊ฒ์ฆ ์์ด ์ฌ์ฉ ๋ถ๊ฐ
๊ธฐํ Cache-Control ์ง์์ด
๐ก fresh๋ ์บ์ ๋ ์๋ต์ด ์์ง ๋ง๋ฃ๋์ง ์์ ์ ํจํ ์ํ๋ฅผ ๋ํ๋ด๊ณ , stale์ ์บ์ ๋ ์๋ต์ด ๋ง๋ฃ๋์ด ์ต์ ์ํ๊ฐ ์๋์ ๋ํ๋. stale-while-revalidate ์ง์์ด ์ฌ์ฉ ์ stale ์บ์๊ฐ ์ฌ์ฌ์ฉ๋ ์ ์์.
private
: ์๋ต์ ์ฌ์ฉ์(๋ธ๋ผ์ฐ์ ๋ฑ) ์บ์์๋ง ์ ์ฅํ๊ณ , ์ค๊ฐ ์๋ฒ(CDN ๋ฑ)์๋ ์ ์ฅํ์ง ์๋๋ก ์ง์no-store
: ๋ธ๋ผ์ฐ์ ์ ์ค๊ฐ ์๋ฒ ๋ชจ๋ ์๋ต์ ์ ์ฅํ์ง ์๋๋ก ์ง์(๋ฏผ๊ฐํ ์ ๋ณด ์ฒ๋ฆฌ์ ์ ํฉ)stale-while-revalidate
: ๋ง๋ฃ๋ ์บ์๋ฅผ ์์๋ก ์ ๊ณตํ๊ณ , ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ฌ๊ฒ์ฆ/์บ์ ์ ๋ฐ์ดํธ ์ํmax-stale
: ํด๋ผ์ด์ธํธ๊ฐ ๋ง๋ฃ๋ ์๋ต์ ํ์ฉํ๋ ์๊ฐ. ์๋ฅผ ๋ค์ด ํด๋ผ์ด์ธํธ์์max-stale=60
์ผ๋ก ์์ฒญํ๋ฉด ์บ์ ๋ ์๋ต์ด ๋ง๋ฃ๋ ํ ์ต๋ 60์ด๊น์ง๋ ํ์ฉํ๋ค๋ ๊ฒ์ ๋ํ๋. ๊ฐ ์์ดmax-stale
๋ง ์ฌ์ฉํ๋ฉด ๋ง๋ฃ๋ ์๋ต๋ ์๊ฐ์ ํ ์์ด ๋ฐ์๋ค์ธ๋ค๋ ์๋ฏธmin-fresh
: ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ๋ ์๋ต์ด ์ง์ ์๊ฐ ๋์ fresh ํ๋๋ก ์๊ตฌ. ์๋ฅผ ๋ค์ดmin-fresh=30
์ผ๋ก ์์ฒญํ๋ฉด ์ต์ 30์ด ๋์ fresh ์ํ๋ก ์ ์งํ ์ ์๋ ์๋ต๋ง ๋ฐ๊ฒ ๋ค๋ ์๋ฏธ
์ฌ๊ฒ์ฆ ์์ฒญ ํค๋
If-None-Match
: ์ ๊ณตํ ETag์ ์๋ฒ ๋ฆฌ์์ค์ ETag ๊ฐ์ด ๋ค๋ฅผ ๋๋ง ์์ฒญ ์ฒ๋ฆฌIf-Modified-Since
: ์ง์ ํ ๋ ์ง ์ดํ ๋ฆฌ์์ค๊ฐ ์์ ๋์์ ๋๋ง ์์ฒญ ์ฒ๋ฆฌIf-Match
: ETag๊ฐ ์ผ์นํ ๋๋ง ์์ฒญ ์ฒ๋ฆฌIf-Unmodified-Since
: ์ง์ ํ ๋ ์ง ์ดํ ๋ฆฌ์์ค๊ฐ ์์ ๋์ง ์์์ ๋๋ง ์์ฒญ ์ฒ๋ฆฌIf-Range
: ๋ฆฌ์์ค๊ฐ ๋ณ๊ฒฝ๋์ง ์์์ผ๋ฉด ๋ถ๋ถ ์ ์ก, ๋ณ๊ฒฝ๋์์ผ๋ฉด ์ ์ฒด ์ ์ก
๋ ํผ๋ฐ์ค
Cache-Control - HTTP | MDN
Cache-Control ์ผ๋ฐ ํค๋ ํ๋๋ ์์ฒญ๊ณผ ์๋ต ๋ด์ ์บ์ฑ ๋ฉ์ปค๋์ฆ์ ์ํ ๋๋ ํฐ๋ธ๋ฅผ ์ ํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค. ์บ์ฑ ๋๋ ํฐ๋ธ๋ ๋จ๋ฐฉํฅ์ฑ์ด๋ฉฐ, ์ด๋ ์์ฒญ ๋ด์ ์ฃผ์ด์ง ๋๋ ํฐ๋ธ๊ฐ ์๋ต ๋ด์ ์ฃผ์ด์ง
developer.mozilla.org
'๐ช Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[HTTP] ETag ์ํฐํฐ ํ๊ทธ ํค๋ (0) | 2025.05.05 |
---|---|
[JS] ์๋ฐ์คํฌ๋ฆฝํธ 6์ค๋ก ์ด๋ฏธ์ง ๋น๊ต ์ฌ๋ผ์ด๋ ๋ง๋ค๊ธฐ (0) | 2025.04.17 |
[Next.js] API ๋ผ์ฐํธ ๋ณดํธํ๊ธฐ - Unkey (0) | 2025.03.30 |
[Next.js] dnd-kit์ ํ์ฉํ ์นธ๋ฐ(Kanban) ๋ณด๋ ๋๋๊ทธ ์ค ๋๋กญ ๊ตฌํ (0) | 2025.03.18 |
[UI] Shadcn DropdownMenu์์ Dialog ์๋ ๋ซํ ๋ฌธ์ ํด๊ฒฐ (0) | 2025.03.09 |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[HTTP] ETag ์ํฐํฐ ํ๊ทธ ํค๋
[HTTP] ETag ์ํฐํฐ ํ๊ทธ ํค๋
2025.05.05 -
[JS] ์๋ฐ์คํฌ๋ฆฝํธ 6์ค๋ก ์ด๋ฏธ์ง ๋น๊ต ์ฌ๋ผ์ด๋ ๋ง๋ค๊ธฐ
[JS] ์๋ฐ์คํฌ๋ฆฝํธ 6์ค๋ก ์ด๋ฏธ์ง ๋น๊ต ์ฌ๋ผ์ด๋ ๋ง๋ค๊ธฐ
2025.04.17 -
[Next.js] API ๋ผ์ฐํธ ๋ณดํธํ๊ธฐ - Unkey
[Next.js] API ๋ผ์ฐํธ ๋ณดํธํ๊ธฐ - Unkey
2025.03.30 -
[Next.js] dnd-kit์ ํ์ฉํ ์นธ๋ฐ(Kanban) ๋ณด๋ ๋๋๊ทธ ์ค ๋๋กญ ๊ตฌํ
[Next.js] dnd-kit์ ํ์ฉํ ์นธ๋ฐ(Kanban) ๋ณด๋ ๋๋๊ทธ ์ค ๋๋กญ ๊ตฌํ
2025.03.18