๐ ๊น์ํ ๋์ "๋ชจ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ HTTP ์น ๊ธฐ๋ณธ ์ง์" ๊ฐ์ ๋ฃ๊ณ ์ ๋ฆฌ
๐์บ์ ๊ธฐ๋ณธ ๋์
- ์บ์๊ฐ ์์ ๋
ex) ์ด๋ฏธ์ง๋ฅผ ์์ฒญํ ๊ฒฝ์ฐ ์๋ฒ๋ ์ด๋ฏธ์ง์ ๋ํ ํค๋(0.1M)์ ๋ฐ๋์ ์ด๋ฏธ์ง(1.0M)๋ฅผ ํฉ์ณ 1.1M์ ์๋ต์ ๋ณด๋ธ๋ค.
์บ์๊ฐ ์๋ค๋ฉด ์์ฒญํ ๋๋ง๋ค 1.1M์ ์๋ต์ ๋ณด๋- ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ์ด ์์ด๋ ๊ณ์ ๋คํธ์ํฌ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋ค์ด๋ฐ์์ผ ํ๋ค.
- ์ธํฐ๋ท ๋คํธ์ํฌ๋ ๋งค์ฐ ๋๋ฆฌ๊ณ ๋น์ธ๋ค + ๋ธ๋ผ์ฐ์ ๋ก๋ฉ ์๋๊ฐ ๋๋ฆฌ๋ค = ๋๋ฆฐ ์ฌ์ฉ์ ๊ฒฝํ
- ์บ์๋ฅผ ์ ์ฉํ๋ฉด
ex) ์๋ฒ์์ ์บ์ ์ ์ฉ์ ํ๊ฒ ๋๋ฉด ์์ฒญ์ ์๋ฒ๊ฐ ์๋ตํ ๋ ์บ์๊ฐ ์ ํจํ ์๊ฐ์ ์ง์ ํ์ฌ ํด๋น ์์ฒญ์ ๋ํ
๋ฐ์ดํฐ๋ฅผ ๋ณด๋ธ๋ค. ๊ทธ๋ฆฌ๊ณ ์น๋ธ๋ผ์ฐ์ ๋ ๊ทธ ์๋ต ๊ฒฐ๊ณผ๋ฅผ ๋ค์ด๋ฐ์ ๋ธ๋ผ์ฐ์ ์บ์์ ์ ์ฅํ๋ค (์ ํจ์๊ฐ๋งํผ)
๋๋ฒ์งธ ์์ฒญ์ ์น ๋ธ๋ผ์ฐ์ ๋ ์บ์๋ถํฐ ๋ค์ ธ์ ์ ํจ์๊ฐ์ด ๋ง๋ฃ๋์ง ์์๋ค๋ฉด ์กด์ฌํ๊ณ ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค.
๋ค์ ์์ฒญ์ ์ ํจ์๊ฐ ๋ง๋ฃ๋๋ฉด ๋ค์ ๋ค์ด๋ฐ์ ๊ธฐ์กด์ ์บ์์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ด๊ธฐํํ๊ณ ๊ฐ์ ธ์จ ๊ฒ์ผ๋ก ๋ฎ๋๋ค.
- ๋น์ผ ๋คํธ์ํฌ ์ฌ์ฉ๋์ ์ค์ผ ์ ์๋ค.
- ์บ์ ๊ฐ๋ฅ ์๊ฐ๋์ ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ์ง ์์๋ ๋๋ค. + ๋ธ๋ผ์ฐ์ ๋ก๋ฉ ์๋๊ฐ ๋งค์ฐ ๋น ๋ฅด๋ค = ๋น ๋ฅธ ์ฌ์ฉ์ ๊ฒฝํ
- ๋ง๋ฃ๋๋ฉด ๋ค์ ์กฐํํ๊ณ ๋ค์ ๋ค์ด๋ก๋ํ์ฌ ์บ์๋ฅผ ๊ฐฑ์ ํ๋ค.

๊ทธ๋ฐ๋ฐ ์๊ฐ๋ง ๋ง๋ฃ๋ฌ์ ๋ฟ ๋ฐ์ดํฐ๊ฐ ๋ณํ๊ฑด ์๋๋ฐ ๋ ๋ค์ด๋ฐ์์ผ ํ๋ค?!
์ด๊ฑธ ํด๊ฒฐํ ์ ์๋ ๋งค์ปค๋์ฆ์ด ๋ฐ๋ก ๊ฒ์ฆ ํค๋์ด๋ค.
๐๊ฒ์ฆ ํค๋์ ์กฐ๊ฑด๋ถ ์์ฒญ1
์บ์ ๋ง๋ฃ ํ์๋ ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ์ง ์์๋ค๋ฉด ๋ง๋ฃ๋ฌ๋๋ผ๋ ๊ทธ ์บ์๋ฅผ ์ฌ์ฌ์ฉ ํ ์ ์๋ค.
๋จ, ์น๋ธ๋ผ์ฐ์ ์บ์์ ๋ฐ์ดํฐ์ ์๋ฒ์ ๋ฐ์ดํฐ๊ฐ ๊ฐ๋ค๋ ์ฌ์ค์ ํ์ธํ ์ ์๋ ๋ฐฉ๋ฒ์ด ํ์ํ๋ฐ, ๊ทธ๊ฒ ๊ฒ์ฆ ํค๋.
- ํด๋ผ์ด์ธํธ์ ๋ฐ์ดํฐ ์์ฒญ
- ๊ฒ์ฆ ํค๋๋ฅผ ํตํด ์๋ฒ๊ฐ Last-Modified ๊ฐ์ ์บ์ ๋ง๋ฃ์๊ฐ๊ณผ ํจ๊ป ์ ์ก
ex) Last-Modified: 2020๋ 11์ 10์ผ 10:00:00 (๊ฒ์ฆ ํค๋) - ์๋ต ๊ฒฐ๊ณผ๋ฅผ ์น๋ธ๋ผ์ฐ์ ๊ฐ ์บ์์ ์ ์ฅ. (๋ง๋ฃ์๊ฐ๊ณผ ์ต์ข ์์ ์ผ ์ ๋ณด ๋ํ ๊ฐ์ด)
- ํด๋ผ์ด์ธํธ์ ๋ฐ์ดํฐ ์์ฒญ์ ๋จผ์ ์บ์๋ฅผ ์กฐํํ๊ณ ๋ง๋ฃ์๊ฐ ์ด๊ณผํ ๊ฒฝ์ฐ ์บ์์ ์ต์ข
์์ ์ผ์ ์์ฒญ์ ๋ฃ์ด ๋ณด๋ธ๋ค.
ex) if-modified-since: 2020๋ 11์ 10์ผ 10:00:00 (์กฐ๊ฑด๋ถ ํค๋, ๋ง์ฝ ์ดํ๋ก ๋ณ๊ฒฝ๋์๋ค๋ฉด?) - ์๋ฒ๊ฐ ์ด๋ฅผ ์๋ฒ๋ด์ ์ต์ข
์์ ์ผ๊ณผ ๋น๊ตํด ๋ดค์ ๋ ๋์ผํ๋ฉด ๋ฐ๋ ์์ด ํค๋ ์ ๋ณด๋ง ์๋ 304 Not Modified ์๋ต์ ๋ณด๋ธ๋ค. (ํค๋ ํฌ๊ธฐ ๋งํผ์ ์ฉ๋์ ์ ๋ฌ)
ex) cache-control: max-age=60
Last-Modified: 2020๋ 11์ 10์ผ 10:00:00 - ์ด ์๋ต์ ๋ฐ์ผ๋ฉด ์บ์ ์ปจํธ๋กค ๊ฐ์ ๊ฐฑ์ ์์ผ ์บ์๋ฅผ ๋ค์ ์ธํ . ๊ทธ๋ฆฌ๊ณ ์ด ์บ์๋ฅผ ๋ถ๋ฌ์ ์ฌ์ฉํ๋ค.
- ์บ์ ์ ํจ์๊ฐ ์ด๊ณผ + ์๋ฒ ๋ฐ์ดํฐ ๊ฐฑ์ ์์ ์
- 304 Moidified + ํค๋ ๋ฉํ ์ ๋ณด๋ง ์๋ต(๋ฐ๋X)
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ๊ฐ ๋ณด๋ธ ์๋ต ํค๋ ์ ๋ณด๋ก ์บ์์ ๋ฉํ ์ ๋ณด๋ฅผ ๊ฐฑ์
- ํด๋ผ์ด์ธํธ๋ ์บ์์ ์ ์ฅ๋์ด ์๋ ๋ฐ์ดํฐ ์ฌํ์ฉ
- ๊ฒฐ๊ณผ์ ์ผ๋ก ๋คํธ์ํฌ ๋ค์ด๋ก๋๋ ๋ฐ์ํ๋ ์ฉ๋์ด ์ ์ ํค๋๋ง ๋ค์ด๋ฐ์ผ๋ฏ๋ก ๋งค์ฐ ์ค์ฉ์ ์ธ ํด๊ฒฐ์ฑ ์ด๋ค.
๐๊ฒ์ฆ ํค๋์ ์กฐ๊ฑด๋ถ ์์ฒญ2
- ๊ฒ์ฆ ํค๋
- ์บ์ ๋ฐ์ดํฐ์ ์๋ฒ ๋ฐ์ดํฐ๊ฐ ๊ฐ์์ง ๊ฒ์ฆํ๋ ๋ฐ์ดํฐ
- Last-Modified, ETag
- ์กฐ๊ฑด๋ถ ์์ฒญ ํค๋
- ๊ฒ์ฆ ํค๋๋ก ์กฐ๊ฑด์ ๋ฐ๋ฅธ ๋ถ๊ธฐ
- If-Modified-Since: Last-Modified ์ฌ์ฉ
- If-None-Match: ETag ์ฌ์ฉ
- ์กฐ๊ฑด์ด ๋ง์กฑํ๋ฉด 200 OK
- ์กฐ๊ฑด์ด ๋ง์กฑํ์ง ์์ผ๋ฉด 304 Not Modified
- If-Modified-Since: ์ดํ์ ๋ฐ์ดํฐ๊ฐ ์์ ๋์๋ค๋ฉด?
- ๋ฐ์ดํฐ ๋ฏธ๋ณ๊ฒฝ์ (์คํจ)
- 304 Not Modified, ํค๋ ๋ฐ์ดํฐ๋ง ์ ์ก (ํค๋ ์ฉ๋๋งํผ ์ ์ก) - ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ (์ฑ๊ณต)
- 200 OK, ๋ชจ๋ ๋ฐ์ดํฐ ์ ์ก (ํค๋ + ๋ฐ๋ ์ฉ๋ ์ ์ก)
- ๋ฐ์ดํฐ ๋ฏธ๋ณ๊ฒฝ์ (์คํจ)
- Last-Modified, If-Modified-Since ๋จ์
- 1์ด ๋ฏธ๋ง(0.x์ด) ๋จ์๋ก ์บ์ ์กฐ์ ์ด ๋ถ๊ฐ๋ฅ (์ต์ ๋จ์๊ฐ ์ด๋ผ์)
- ๋ ์ง ๊ธฐ๋ฐ์ ๋ก์ง ์ฌ์ฉ
- ๋ฐ์ดํฐ๋ฅผ ์์ ํด์ ๋ ์ง๊ฐ ๋ค๋ฅด์ง๋ง, ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์์ ํด์ ๋ฐ์ดํฐ ๊ฒฐ๊ณผ๊ฐ ๋๊ฐ์ ๊ฒฝ์ฐ๋ ์ ์ฒด ๋ค์ด๋ก๋
- ์๋ฒ์์ ์ต์ข
์์ ์ผ์ด ์๋๋ผ ๋ณ๋์ ์บ์ ๋ก์ง์ ๊ด๋ฆฌํ๊ณ ์ถ์ ๊ฒฝ์ฐ ์ฌ์ฉ ๋ถ๊ฐ
(ex. ์คํ์ด์ค๋ ์ฃผ์์ฒ๋ผ ํฌ๊ฒ ์ํฅ์ด ์๋ ๋ณ๊ฒฝ์ ๋ฌด์ํ๊ณ ์บ์ ์ ์ง ์ํ๋ ๊ฒฝ์ฐ)
์ด๋ฐ ๊ฒฝ์ฐ ์ด๊ฑธ ํด๊ฒฐ ํ ์ ์๋ ๊ฒ์ด ETag!
- ETag, If-None-Match
- ETag(Entity Tag)
- ์บ์์ฉ ๋ฐ์ดํฐ์ ์์์ ๊ณ ์ ํ ๋ฒ์ ์ด๋ฆ์ ๋ฌ์๋ (ex. ETag: "v1.0" , ETag: "a2jiodwjekjl3")
- ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ์ด ์ด๋ฆ์ ๋ฐ๊พธ์ด์ ๋ณ๊ฒฝ (Hash๋ฅผ ๋ค์ ์์ฑ, ๋ง์ฝ ์ปจํ ์ธ ๊ฐ ๋์ผํ๋ฉด ๋์ผํ Hash๊ฐ ๋์ด)
- ์์ฒญ์ ETag๋ฅผ ๋ณด๋ด์ด ๊ฐ์ผ๋ฉด ์ ์ง, ๋ค๋ฅด๋ฉด ๋ค์ ๋ค์ด๋ก๋
- ์ฌ์ฉ ๊ณผ์ ์ Last-Modified, If-Modified-Since๊ณผ ๋์ผํ๋ฉฐ ์คํจ์(๋ฏธ๋ณ๊ฒฝ) 304 Not Modified, ์ฑ๊ณต์(๋ณ๊ฒฝ) 200 OK
- ์บ์ ์ ์ด ๋ก์ง์ ์๋ฒ์์ ์์ ํ ๊ด๋ฆฌ (ํด๋ผ์ด์ธํธ๋ ์บ์ ๋งค์ปค๋์ฆ์ ๋ชจ๋ฅธ๋ค)
- ํด๋ผ์ด์ธํธ๋ ๋จ์ํ ์ด ๊ฐ์ ์๋ฒ์ ์ ๊ณต
๐์บ์์ ์กฐ๊ฑด๋ถ ์์ฒญ ํค๋ ์ ๋ฆฌ
- ์บ์ ์ ์ด ํค๋
- Cache-Control: ์บ์ ์ ์ด (์ง๊ธ์ ์ด๊ฑธ๋ก ๋ชจ๋ ๊ฐ๋ฅ)
- ์บ์ ์ง์์ด(directives)
- Cache-Control: max-age
- ์บ์ ์ ํจ ์๊ฐ, ์ด๋จ์ - Cache-Control: no-cache
- ๋ฐ์ดํฐ๋ ์บ์ํด๋ ๋์ง๋ง ์บ์ ์ฌ์ฉํ๋ ค๊ณ ํ ๋ ํญ์ Origin ์๋ฒ์ ๊ฒ์ฆํ๊ณ ์ฌ์ฉ - Cache-Control: no-store
- ๋ฐ์ดํฐ์ ๋ฏผ๊ฐํ ์ ๋ณด๊ฐ ์์ผ๋ฉด ์ ์ฅํ๋ฉด ์๋๋ค๋ ํ์ (๋ฉ๋ชจ๋ฆฌ์์ ์ฌ์ฉํ๊ณ ์ต๋ํ ๋นจ๋ฆฌ ์ญ์ )
- Pragma: ์บ์ ์ ์ด(ํ์ ํธํ) : HTTP 1.0
- Expires: ์บ์ ์ ํจ ๊ธฐ๊ฐ(ํ์ ํธํ)
- ์บ์ ๋ง๋ฃ์ผ ์ง์
- ๋ ์ ์ฐํ Cache-Control: max-age ๊ถ์ฅ
- Cache-Control: max-age ๋ ๊ฐ์ด ์ฌ์ฉ์ Expires๋ ๋ฌด์๋๋ค.
- Cache-Control: ์บ์ ์ ์ด (์ง๊ธ์ ์ด๊ฑธ๋ก ๋ชจ๋ ๊ฐ๋ฅ)
- ๊ฒ์ฆ ํค๋ (Validator)
- ETag: "v1.0" , ETag: "a2jiodwjekjl3"
- Last-Modified: Thu, 04 Jun 2020 07:19:24 GMT
- ์กฐ๊ฑด๋ถ ์์ฒญ ํค๋
- If-Match, If-None-Match: ETag ๊ฐ ์ฌ์ฉ
- If-Modified-Since, If-Unmodified-Since: Last-Modified ๊ฐ ์ฌ์ฉ
๐ํ๋ก์ ์บ์
- ์(Origin) ์๋ฒ
์ ์๋ฒ์ ์ง์ ์ ๊ทผํ๊ฒ ๋๋ฉด ๊ฑฐ๋ฆฌ๊ฐ ๋ฉ์๋ก ์๋๊ฐ ๋๋ฆฌ๋ค
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํ๋ก์ ์บ์ ์๋ฒ๋ฅผ ๋์ - ํ๋ก์(Proxy) ์บ์ ์๋ฒ
๋ณดํต CDN(Content Delivery Network)์ด๋ฆ์ผ๋ก ์๋น์ค๋ก ์ ๊ณต
์์๋ฒ๊ฐ ์๋ ํ๋ก์ ์๋ฒ(ํด๋ผ์ด์ธํธ์ ๊ฐ๊น์ด ํ๋ก์ ์บ์ ์๋ฒ)์ ๊ฑฐ์ณ ๊ฐ๊ฒ ํ์ฌ, ํ๋ก์ ์๋ฒ์ ์บ์๊ฐ ์์ผ๋ฉด ๊ฑฐ๊ธฐ์ ์บ์๋ฅผ ์กฐํํด ๋น ๋ฅธ ์๋ต์ ๋ฐ๊ฒ ํ๋ค. (์์ผ๋ฉด ์์๋ฒ ๋ค๋ ์์ผํจ)
- ํ๋ก์ ์๋ฒ์ ์บ์๋ฅผ Public ์บ์๋ผ ํ๊ณ ํด๋ผ์ด์ธํธ์ ์บ์๋ Private ์บ์๋ผ๊ณ ํ๋ค. - Cache-Control: ๊ธฐํ
- Cache-Control: public
- ์๋ต์ด public ์บ์์ ์ ์ฅ๋์ด๋ ๋จ - Catche-Control: private
- ์๋ต์ด ํด๋น ์ฌ์ฉ์๋ง์ ์ํ ๊ฒ์, private ์บ์์ ์ ์ฅํด์ผ ํจ(๊ธฐ๋ณธ๊ฐ) - Cache-Control: s-maxage
- ํ๋ก์ ์บ์์๋ง ์ ์ฉ๋๋ max-age - Age: 60 (HTTP ํค๋)
- ์ค๋ฆฌ์ง ์๋ฒ์ ์๋ต ํ ํ๋ก์ ์บ์ ๋ด์ ๋จธ๋ฌธ ์๊ฐ(์ด)
- Cache-Control: public
๐์บ์ ๋ฌดํจํ
- ํ์คํ ์บ์ ๋ฌดํจํ ์๋ต์ด ์กด์ฌ (์บ์๋ฅผ ์ ์ฉ์ํด๋ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์์๋ก ์บ์ํด๋ฒ๋ฆฌ๊ณ ํ๊ธฐ ๋๋ฌธ)
- Cache-Control:
- Cache-Control: no-cache, no-store, must-revalidate (์ด๊ฑธ ๋ชจ๋ ๋ฃ์ด์ฃผ์ด์ผ ๋ฌดํจํ)
- Cache-Control: no-cache
- ๋ฐ์ดํฐ๋ ์บ์ํด๋ ๋์ง๋ง ์บ์ ์ฌ์ฉํ๋ ค๊ณ ํ ๋ ํญ์ Origin ์๋ฒ์ ๊ฒ์ฆํ๊ณ ์ฌ์ฉ - Cache-Control: no-store
- ๋ฐ์ดํฐ์ ๋ฏผ๊ฐํ ์ ๋ณด๊ฐ ์์ผ๋ฉด ์ ์ฅํ๋ฉด ์๋๋ค๋ ํ์ (๋ฉ๋ชจ๋ฆฌ์์ ์ฌ์ฉํ๊ณ ์ต๋ํ ๋นจ๋ฆฌ ์ญ์ ) - Cahce-Control: must-revalidate
- ์บ์ ๋ง๋ฃํ ์ต์ด ์กฐํ์ ์ ์๋ฒ์ ๊ฒ์ฆํด์ผํจ
- ์ ์๋ฒ ์ ๊ทผ ์คํจ์ ๋ฐ๋์ ์ค๋ฅ๊ฐ ๋ฐ์ํด์ผํจ (504 Gateway Timeout)
- must-revalidate๋ ์บ์ ์ ํจ ์๊ฐ์ด๋ผ๋ฉด ์บ์๋ฅผ ์ฌ์ฉํจ
- โno-cache๊ฐ ์๋๋ฐ ์ด๊ฑฐ ์ ์ฌ์ฉ
no-cache์ ๊ฒฝ์ฐ ํ๋ก์ ์๋ฒ์ ์ ์๋ฒ ์ฌ์ด์ ์ผ์์ ์ฅ์ ๊ฐ ์๊ธด ๊ฒฝ์ฐ ํ๋ก์ ์๋ฒ์ ์ค๋๋ ๋ฐ์ดํฐ๋ผ๋ ๋ณด์ฌ์ฃผ๋ ์ค์ ๋ ํ ์ ์๋ค. must-revalidate๋ ์๋ฒ ์ฌ์ด ์ฅ์ ์ ๋ฌด์กฐ๊ฑด 504 ์ค๋ฅ ์๋ต
- Cache-Control: no-cache
- Pragma: no-cache (HTTP 1.0 ํ์ ํธํ, HTTP 1.0 ์์ฒญ ๊ฒฝ์ฐ๋ฅผ ๋ฌดํจํ ์ํด)
- Cache-Control: no-cache, no-store, must-revalidate (์ด๊ฑธ ๋ชจ๋ ๋ฃ์ด์ฃผ์ด์ผ ๋ฌดํจํ)
'Computer Science > Web' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| HTTP ์น ์ง์ - HTTP ํค๋1 (์ผ๋ฐ ํค๋) (0) | 2023.03.12 |
|---|---|
| HTTP ์น ์ง์ - HTTP ์ํ์ฝ๋ ์๊ฐ (0) | 2023.03.08 |
| HTTP ์น ์ง์ - HTTP ๋ฉ์๋ ํ์ฉ (0) | 2023.03.08 |
| HTTP ์น ์ง์ - HTTP API๋ฅผ ๋ง๋ค์ด๋ณด์ (0) | 2023.03.07 |
| HTTP ์น ์ง์ - ๋ชจ๋ ๊ฒ์ด HTTP (0) | 2023.03.06 |
