์บ์ ๊ธฐ๋ณธ ๋์
์บ์๊ฐ ์์ ๋
- ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์ง ์์๋ ๊ณ์ ๋คํธ์ํฌ ํตํด์ ๋ฐ์ดํฐ๋ฅผ ๋ค์ด๋ก๋ ๋ฐ์์ผ ํจ
- ์ธํฐ๋ท ๋คํธ์ํฌ๋ ๋งค์ฐ ๋๋ฆฌ๊ณ ๋น์ธ๋ค
- ๋ธ๋ผ์ฐ์ ๋ก๋ฉ ์๋๊ฐ ๋๋ฆผ
- ๋๋ฆฐ ์ฌ์ฉ์ ๊ฒฝํ
์บ์ ์ ์ฉ
<๋ฐฉ๋ฒ>
1. ์ฒซ ๋ฒ์งธ ์์ฒญ ์, ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์์ฒญํ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๊ฐ ์๋ต์ ํด์ค ๋, cache-control(์บ์ ์ ํจ ์๊ฐ)์ ๊ฐ์ด ๋ณด๋
2. ์๋ฒ๋ก ๋ถํฐ ์จ ์๋ต๊ฒฐ๊ณผ๋ฅผ ๋ธ๋ผ์ฐ์ ์บ์์ ์บ์ ์ ํจ ์๊ฐ๋์ ์ ์ฅํด ๋์
3. ์น ๋ธ๋ผ์ฐ์ ๊ฐ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ์์ฒญ ํ ๋, ๋ธ๋ผ์ฐ์ ์บ์์ ์๋ ์์ฒญ์ ๋ณด์ด๋ฉด ์บ์ ์ ํจ ์๊ฐ์ ๊ฒ์ฆ ํ ํ ๋ธ๋ผ์ฐ์ ์บ์์์ ํด๋น ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ด
- ์บ์ ๋๋ถ์ ์บ์ ๊ฐ๋ฅ ์๊ฐ๋์ ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ์ง ์์๋ ๋จ
- ๋น์ผ ๋คํธ์ํฌ ์ฌ์ฉ๋์ ์ค์ผ ์ ์์
- ๋ธ๋ผ์ฐ์ ๋ก๋ฉ ์๋๊ฐ ๋งค์ฐ ๋น ๋ฆ
- ๋น ๋ฅธ ์ฌ์ฉ์ ๊ฒฝํ
<์บ์ ์๊ฐ์ด ์ด๊ณผ๋ ๊ฒฝ์ฐ>
1. ์บ์ ์ ํจ ์๊ฐ์ด ์ด๊ณผ๊ฐ ๋๋ค๋ฉด, ๋ค์ ์๋ฒ์๊ฒ ์์ฒญ
2. ์๋ฒ๋ก ๋ถํฐ ์จ ์๋ต ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ๋ธ๋ผ์ฐ์ ์บ์์ ๋ค์ ์ ์ฅ(๊ธฐ์กด์ ์๋ ๋ฐ์ดํฐ๋ ๋ฎ์ด์์ด์ง) ํ ์บ์ ์ ํจ ์๊ฐ ์๋
- ์บ์ ์ ํจ ์๊ฐ์ด ์ด๊ณผํ๋ฉด, ์๋ฒ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์กฐํํ๊ณ , ์บ์๋ฅผ ๊ฐฑ์
- ์ด๋ ๋ค์ ๋คํธ์ํฌ ๋ค์ด๋ก๋๊ฐ ๋ฐ์
๊ฒ์ฆ ํค๋์ ์กฐ๊ฑด๋ถ ์์ฒญ1
์บ์ ์๊ฐ ์ด๊ณผ
- ์บ์ ์ ํจ ์๊ฐ์ด ์ด๊ณผํด์ ์๋ฒ์ ๋ค์ ์์ฒญํ๋ฉด ๋ค์ ๋ ๊ฐ์ง ์ํฉ์ด ๋ฐ์
- ์๋ฒ์์ ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝ
- ์๋ฒ์์ ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ์ง ์์
- ์บ์ ๋ง๋ฃ ํ์๋ ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ์ง ์์
- ์๊ฐํด๋ณด๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๋์ ์ ์ ์ฅํด ๋์๋ ์บ์๋ฅผ ์ฌ์ฌ์ฉ ํ ์ ์๋ค.
- ๋จ, ํด๋ผ์ด์ธํธ์ ๋ฐ์ดํฐ์ ์๋ฒ์ ๋ฐ์ดํฐ๊ฐ ๊ฐ๋ค๋ ์ฌ์ค์ ํ์ธํ ์ ์๋ ๋ฐฉ๋ฒ ํ์ → ๊ฒ์ฆ ํค๋
๊ฒ์ฆ ํค๋ ์ถ๊ฐ
1. ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์์ฒญํ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๊ฐ ์๋ต์ ๋ณด๋ด์ค ๋, ์บ์ ์ ํจ ์๊ฐ๊ณผ, ๋ง์ง๋ง ์์ ๋ ์ง์ ์๊ฐ์ ๊ฐ์ด ๋ณด๋ (๊ฒ์ฆ ํค๋)
2. ๋ธ๋ผ์ฐ์ ์บ์์ ์๋ต ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํจ, ์ด๋ ์๋ต๊ฐ์ ํฌํจ๋์ด ์๋ ๋ฐ์ดํฐ ์ต์ข ์์ ์ผ๋ ๊ฐ์ด ์ ์ฅ
3. ์บ์ ์๊ฐ์ด ์ด๊ณผ๋๋ค๋ฉด, ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ์ ์์ฒญ์ ํ ๋ ์บ์๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ ์ต์ข ์์ ์ผ์ ๊ฐ์ด ์ ๋ฌ
4. ์์ฒญ ๋ฐ์ ์๋ฒ๋ ์๋ฒ๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ ์ต์ข ์์ ์ผ๊ณผ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ๋ณด๋ธ ๋ฐ์ดํฐ ์ต์ข ์์ ์ผ์ ๋น๊ต (์กฐ๊ฑด๋ถ ์์ฒญ)
5. ์์ ์ด ๋์ง ์์๋ค๋ฉด(์ผ์นํ๋ค๋ฉด), HTTP์๋ต์ ๋ง๋ค ๋ 304 Not Modified๋ฅผ ๋ณด๋ ์ด๋! ์๋ต์ HTTP Body๊ฐ ์์(์์ ๋ ๊ฒ์ด ์๊ธฐ ๋๋ฌธ์) → ํค๋ ๋ถ๋ถ๋ง ์ ์ก
6. ์๋ต๋ฐ์ ๋ธ๋ผ์ฐ์ ์บ์๋ ์๋ต ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฌ์ฉํ๊ณ ํค๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐฑ์ ํจ
- ์บ์ ์ ํจ ์๊ฐ์ด ์ด๊ณผํด๋, ์๋ฒ์ ๋ฐ์ดํฐ๊ฐ ๊ฐฑ์ ๋์ง ์์ผ๋ฉด
- 304 Not Modified + ํค๋ ๋ฉํ ์ ๋ณด๋ง ์๋ต(๋ฐ๋X)
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ๊ฐ ๋ณด๋ธ ์๋ต ํค๋ ์ ๋ณด๋ก ์บ์์ ๋ฉํ ์ ๋ณด๋ฅผ ๊ฐฑ์
- ํด๋ผ์ด์ธํธ๋ ์บ์์ ์ ์ฅ๋์ด ์๋ ๋ฐ์ดํฐ ์ฌํ์ฉ
- ๊ฒฐ๊ณผ์ ์ผ๋ก ๋คํธ์ํฌ ๋ค์ด๋ก๋๊ฐ ๋ฐ์ํ์ง๋ง ์ฉ๋์ด ์ ์ ํค๋ ์ ๋ณด๋ง ๋ค์ด๋ก๋
- ๋งค์ฐ ์ค์ฉ์ ์ธ ํด๊ฒฐ์ฑ
๊ฒ์ฆ ํค๋์ ์กฐ๊ฑด๋ถ ์์ฒญ2
- ๊ฒ์ฆ ํค๋
- ์บ์ ๋ฐ์ดํฐ์ ์๋ฒ ๋ฐ์ดํฐ๊ฐ ๊ฐ์์ง ๊ฒ์ฆํ๋ ๋ฐ์ดํฐ
- Last-Modified, ETag
- ์กฐ๊ฑด๋ถ ์์ฒญ ํค๋
- ๊ฒ์ฆ ํค๋๋ก ์กฐ๊ฑด์ ๋ฐ๋ฅธ ๋ถ๊ธฐ
- If-Modified-Since: Last-Modified ์ฌ์ฉ
- If-None-Match: ETag ์ฌ์ฉ
- ์กฐ๊ฑด์ด ๋ง์กฑํ๋ฉด 200 OK
- ์กฐ๊ฑด์ด ๋ง์กฑํ์ง ์์ผ๋ฉด 304 Not Modified
ex) If-Modified-Since: ์ดํ์ ๋ฐ์ดํฐ๊ฐ ์์ ๋์์ผ๋ฉด?
- ๋ฐ์ดํฐ ๋ฏธ๋ณ๊ฒฝ ์์
- ์บ์: 2020๋ 11์ 10์ผ 10:00:00 vs ์๋ฒ: 2020๋ 11์ 10์ผ 10:00:00
- 304 Not Modified, ํค๋ ๋ฐ์ดํฐ๋ง ์ ์ก(BODY ๋ฏธํฌํจ)
- ์ ์ก ์ฉ๋ 0.1M (ํค๋ 0.1M, ๋ฐ๋ 1.0M)
- ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์์
- ์บ์: 2020๋ 11์ 10์ผ 10:00:00 vs ์๋ฒ: 2020๋ 11์ 10์ผ 11:00:00
- 200 OK, ๋ชจ๋ ๋ฐ์ดํฐ ์ ์ก(BODY ํฌํจ)
- ์ ์ก ์ฉ๋ 1.1M (ํค๋ 0.1M, ๋ฐ๋ 1.0M)
Last-Modified, If-Modified-Since ๋จ์
- 1์ด ๋ฏธ๋ง(0.x์ด) ๋จ์๋ก ์บ์ ์กฐ์ ์ด ๋ถ๊ฐ๋ฅ
- ๋ ์ง ๊ธฐ๋ฐ์ ๋ก์ง ์ฌ์ฉ
- ๋ฐ์ดํฐ๋ฅผ ์์ ํด์ ๋ ์ง๊ฐ ๋ค๋ฅด์ง๋ง, ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์์ ํด์ ๋ฐ์ดํฐ ๊ฒฐ๊ณผ๊ฐ ๋๊ฐ์ ๊ฒฝ์ฐ
- ์๋ฒ์์ ๋ณ๋์ ์บ์ ๋ก์ง์ ๊ด๋ฆฌํ๊ณ ์ถ์ ๊ฒฝ์ฐ
- ex) ์คํ์ด์ค๋ ์ฃผ์์ฒ๋ผ ํฌ๊ฒ ์ํฅ์ด ์๋ ๋ณ๊ฒฝ์์ ์บ์๋ฅผ ์ ์งํ๊ณ ์ถ์ ๊ฒฝ์ฐ
ETag, If-None-Match
- ETag(Entity Tag)
- ์บ์์ฉ ๋ฐ์ดํฐ์ ์์์ ๊ณ ์ ํ ๋ฒ์ ์ด๋ฆ์ ๋ฌ์๋
- ex) ETag: "v1.0", ETag: "a2jiodwjekil3"
- ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ์ด ์ด๋ฆ์ ๋ฐ๊พธ์ด์ ๋ณ๊ฒฝํจ(Hash๋ฅผ ๋ค์ ์์ฑ)
- ex) ETag: "aaaaa" -> ETag: "bbbbb"
- ์ง์ง ๋จ์ํ๊ฒ ETag๋ง ์๋ฒ์ ๋ณด๋ด์ ๊ฐ์ผ๋ฉด ์ ์ง, ๋ค๋ฅด๋ฉด ๋ค์ ๋ฐ๊ธฐ
- ์บ์ ์ ์ด ๋ก์ง์ ์๋ฒ์์ ์์ ํ ๊ด๋ฆฌ
- ํด๋ผ์ด์ธํธ๋ ๋จ์ํ ์ด ๊ฐ์ ์๋ฒ์ ์ ๊ณต(ํด๋ผ์ด์ธํธ๋ ์บ์ ๋ฉ์ปค๋์ฆ์ ๋ชจ๋ฆ)
- ex)
- ์๋ฒ๋ ๋ฐฐํ ์คํ ๊ธฐ๊ฐ์ธ 3์ผ ๋์ ํ์ผ์ด ๋ณ๊ฒฝ๋์ด๋ ETag๋ฅผ ๋์ผํ๊ฒ ์ ์ง
- ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ ์ฃผ๊ธฐ์ ๋ง์ถ์ด ETag ๋ชจ๋ ๊ฐฑ์
์บ์์ ์กฐ๊ฑด๋ถ ์์ฒญ ํค๋
์บ์ ์ ์ด ํค๋
- Cache-Control: ์บ์ ์ ์ด, ์บ์ ์ง์์ด
- Cache-Control: max-age
- ์บ์ ์ ํจ ์๊ฐ, ์ด ๋จ์
- Cache-Control: no-cache
- ๋ฐ์ดํฐ๋ ์บ์ํด๋ ๋์ง๋ง, ํญ์ origin์๋ฒ์ ๊ฒ์ฆํ๊ณ ์ฌ์ฉ
- Cache-Control: no-store
- ๋ฐ์ดํฐ์ ๋ฏผ๊ฐํ ์ ๋ณด๊ฐ ์์ผ๋ฏ๋ก ์ ์ฅํ๋ฉด ์๋จ(๋ฉ๋ชจ๋ฆฌ์์ ์ฌ์ฉํ๊ณ ์ต๋ํ ๋นจ๋ฆฌ ์ญ์ )
- Cache-Control: max-age
- Pragma: ์บ์ ์ ์ด(ํ์ ํธํ)
- Pragma: no-cache
- HTTP 1.0 ํ์ ํธํ
- Expries: ์บ์ ์ ํจ ๊ธฐ๊ฐ(ํ์ ํธํ)
- expires: Mon, 01 Jan 1990 00:00:00 GMT
- ์บ์ ๋ง๋ฃ์ผ์ ์ ํํ ๋ ์ง๋ก ์ง์
- HTTP 1.0๋ถํฐ ์ฌ์ฉ
- ์ง๊ธ์ ๋ ์ ์ฐํ Cache-Cotrol: max-age ๊ถ์ฅ
- Cache-Contro: max-age์ ํจ๊ป ์ฌ์ฉํ๋ฉด Expires๋ ๋ฌด์
๊ฒ์ฆ ํค๋์ ์กฐ๊ฑด๋ถ ์์ฒญ ํค๋
- ๊ฒ์ฆ ํค๋(Validator)
- ETag: "v1.0", ETag: "asid93jkrh2l"
- Last-Modified: Thu, 04 Jun 2020 07:19:24 GMT
- ์กฐ๊ฑด๋ถ ์์ฒญ ํค๋
- If-Match. If-None-Match: ETag ๊ฐ ์ฌ์ฉ
- If-Modified-Since, If-Unmodifed-Since: Last-Modified ๊ฐ ์ฌ์ฉ
ํ๋ก์ ์บ์
: CDN์๋น์ค, ์น ๋ธ๋ผ์ฐ์ ์ ์ ์๋ฒ ์ฌ์ด์ ํ๋ก์ ์บ์ ์๋ฒ๋ฅผ ์ค๊ฐ์ ๋๊ณ ์น๋ธ๋ผ์ฐ์ (ํ๋ผ์ด๋น ์บ์)๊ฐ ํ๋ก์ ์บ์ ์๋ฒ(ํผ๋ธ๋ฆญ ์บ์)์ ์ ๊ทผ ํ ํ, ํ๋ก์ ์บ์ ์๋ฒ์์ ์ ์๋ฒ์ ์ ๊ทผ
- public ์บ์: ์ค๊ฐ์ ๊ณต์ฉ์ผ๋ก ์ฌ์ฉํ๋ ์บ์
- private ์บ์: ์น ๋ธ๋ผ์ฐ์ ๋ ๋ก์ปฌ์ ์ ์ฅ๋๋ ์บ์
Cache-Control
์บ์ ์ง์์ด(directives) - ๊ธฐํ
- Cache-Control: public
- ์๋ต์ด public ์บ์์ ์ ์ฅ๋์ด๋ ๋จ
- Cache-Control: private
- ์๋ต์ด ํด๋น ์ฌ์ฉ์๋ง์ ์ํ ๊ฒ์, private ์บ์์ ์ ์ฅํด์ผ ํจ(๊ธฐ๋ณธ๊ฐ)
- Cache-Control: s-maxage
- ํ๋ก์ ์บ์์๋ง ์ ์ฉ๋๋ max-age
- Age: 60 (HTTP ํค๋)
- ์ค๋ฆฌ์ง ์๋ฒ์์ ์๋ต ํ ํ๋ก์ ์บ์ ๋ด์ ๋จธ๋ฌธ ์๊ฐ(์ด)
์บ์ ๋ฌดํจํ
Cache-Control: ํ์คํ ์บ์ ๋ฌดํจํ ์๋ต
- Cache-Control: no-cache, no-store, must-revalidate
- Pragma: no-cache
- HTTP 1.0 ํ์ ํธํ
์บ์ ์ง์์ด(directives): ํ์คํ ์บ์ ๋ฌดํจํ
- Cache-Control: no-cache
- ๋ฐ์ดํฐ๋ ์บ์ํด๋ ๋์ง๋ง, ํญ์ ์ ์๋ฒ์ ๊ฒ์ฆํ๊ณ ์ฌ์ฉ(์ด๋ฆ์ ์ฃผ์)
- Cache-Control: no-store
- ๋ฐ์ดํฐ์ ๋ฏผ๊ฐํ ์ ๋ณด๊ฐ ์์ผ๋ฏ๋ก ์ ์ฅํ๋ฉด ์๋จ(๋ฉ๋ชจ๋ฆฌ์์ ์ฌ์ฉํ๊ณ ์ต๋ํ ๋นจ๋ฆฌ ์ญ์ )
- Cache-Control: must-revalidate
- ์บ์ ๋ง๋ฃ ํ ์ต์ด ์กฐํ ์ ์ ์๋ฒ์ ๊ฒ์ฆํด์ผํจ
- ์ ์๋ฒ ์ ๊ทผ ์คํจ ์ ๋ฐ๋์ ์ค๋ฅ๊ฐ ๋ฐ์ํด์ผ ํจ - 504(Gateway Timeout)
- must-revalidate๋ ์บ์ ์ ํจ ์๊ฐ์ด๋ผ๋ฉด ์บ์๋ฅผ ์ฌ์ฉํจ
- Pragma: no-cache
- HTTP 1.0 ํ์ ํธํ
no-cache vs must-revalidate
no-cache๋ ์ ์๋ฒ์ ์ ๊ทผํ ์ ์๋ ๊ฒฝ์ฐ ์บ์ ์๋ฒ ์ค์ ์ ๋ฐ๋ผ ์บ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ ์ ์๋ค(์ค๋ฅ ๋ณด๋ค๋ ์ค๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ค)
must-revalidate๋ ์ ์๋ฒ์ ์ ๊ทผํ ์ ์๋ ๊ฒฝ์ฐ, ํญ์ ์ค๋ฅ๊ฐ ๋ฐ์(504 Gateway Timeout)
'์น ์๋น์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ๋์์ธ ํจํด(MVC, MVVM, MVP) (0) | 2022.12.30 |
|---|---|
| ์ ์ ์น? ๋์ ์น? (0) | 2022.12.30 |
| HTTP ํค๋1 - ์ผ๋ฐ ํค๋ (0) | 2022.12.04 |
| HTTP ์ํ์ฝ๋ (0) | 2022.12.02 |
| HTTP ๋ฉ์๋ ํ์ฉ (0) | 2022.12.01 |