์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
- log
- Mapping
- ์์ฒญ
- BPM
- Community-App
- Logging
- Firebase
- BBangting
- API
- Security
- PROJECT
- ์ฑ๊ฐ๋ฐ
- springboot
- Inflearn
- ๊น์ํ
- HTTP
- JPA
- docker
- Spring
- kotlin
- MVC
- MySQL
- Today
- Total
yeon's blog
[HTTP ์น ๊ธฐ๋ณธ ์ง์] HTTP ํค๋ 2 - ์บ์์ ์กฐ๊ฑด๋ถ ์์ฒญ ๋ณธ๋ฌธ
๐ฑ ์บ์์ ๊ธฐ๋ณธ ๋์
์บ์๊ฐ ์์ ๋
- ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์ง ์์๋ ๊ณ์ ๋คํธ์ํฌ๋ฅผ ํตํด์ ๋ฐ์ดํฐ๋ฅผ ๋ค์ด๋ก๋ ๋ฐ์์ผ ํ๋ค.
- ์ธํฐ๋ท ๋คํธ์ํฌ๋ ๋งค์ฐ ๋๋ฆฌ๊ณ ๋น์ธ๋ค.
- ๋ธ๋ผ์ฐ์ ์ ๋ก๋ฉ ์๋๊ฐ ๋๋ฆฌ๋ค.
- ์ด๋ก ์ธํด ๋๋ฆฐ ์ฌ์ฉ์ ๊ฒฝํ์ด ๋ฐ์ํ๋ค.
์บ์ ์ ์ฉ
![](https://blog.kakaocdn.net/dn/qsefk/btsCF6XlGaQ/adlAtcUFQikwKOjOM52rsK/img.png)
์ด๋ ๊ฒ ์บ์๋ฅผ ์ ์ฉํ๊ฒ ๋๋ฉด, ์ผ์ ์๊ฐ ๋์ ๊ฐ์ ์์ฒญ์ ๋ณด๋ผ ๋,
๋คํธ์ํฌ๋ฅผ ํตํด์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์์ค์ง ์๊ณ ๋ธ๋ผ์ฐ์ ์บ์์ ์ ์ํด์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์์ค๊ธฐ ๋๋ฌธ์ ์ด ๊ณผ์ ์์ ์๊ฐ์ด ํฌ๊ฒ ๋จ์ถ๋๋ค.
- ์บ์ ๋๋ถ์ ์บ์ ๊ฐ๋ฅ ์๊ฐ๋์ ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ์ง ์์๋ ๋๋ค.
- ๋น์ผ ๋คํธ์ํฌ ์ฌ์ฉ๋์ ์ค์ผ ์ ์๋ค.
- ๋ธ๋ผ์ฐ์ ๋ก๋ฉ ์๋๊ฐ ๋งค์ฐ ๋น ๋ฅด๋ค.
- ๋น ๋ฅธ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ง๋ค์ด์ค๋ค.
์น ๋ธ๋ผ์ฐ์ ์ด์ฉ์ ํ ๋ฒ ๋ค์ด๊ฐ๋ ์ฌ์ดํธ๋ฅผ ์ฌ๋ฐฉ๋ฌธํ ๋ ๋งค์ฐ ๋น ๋ฅธ ์ด์ ๋ ์บ์๋ฅผ ์ฌ์ฉํ ๋๋ถ์ด๋ค.
![](https://blog.kakaocdn.net/dn/pgI7b/btsCOGW613b/aG9srkpbhNDOKR7yxECvOk/img.png)
์ด๋ฌํ ๊ฒฝ์ฐ ๋ค์ ์๋ฒ์ ์์ฒญ์ ํตํด ๋ฐ์์ ๊ธฐ์กด์ ์ ํจ ์๊ฐ์ด ์ง๋ ์บ์๋ฅผ ์๋ก์ด ๋ฐ์ดํฐ๋ก ๋ฎ์ด์์์ ์ด๊ธฐํ์ํจ๋ค.
์บ์ ์๊ฐ ์ด๊ณผ
- ์บ์ ์ ํจ ์๊ฐ์ด ์ด๊ณผํ๋ฉด, ์๋ฒ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์กฐํํ๊ณ , ์บ์๋ฅผ ๊ฐฑ์ ํ๋ค.
- ์ด๋ ๋ค์ ๋คํธ์ํฌ ๋ค์ด๋ก๋๊ฐ ๋ฐ์ํ๋ค.
- ๊ทธ๋ฐ๋ฐ, ๊ฒฐ๊ตญ ๋ฐ์์จ ๋ฐ์ดํฐ๊ฐ ์๋ ์บ์์ ์๋ ๊ฒ๊ณผ ์์ ํ ๊ฐ์ผ๋ฉด ์๊น์ง ์์๊น? (์ด๋ฏธ์ง๊ฐ ๋ฐ๋์ง ์๊ธฐ ๋๋ฌธ์!)
๐ฑ ๊ฒ์ฆ ํค๋์ ์กฐ๊ฑด๋ถ ์์ฒญ1
์บ์์ ์๊ฐ์ด ์ด๊ณผ๋์ด ๋ ์ด์ ์ ํจํ์ง ์์ ๊ฒฝ์ฐ ์๋กญ๊ฒ ์๋ฒ์ ์ ์ํด ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ ์บ์ฑํด์ผ ํ๋๋ฐ, ์ด๋ฅผ ์กฐ๊ฑด์ ๋ฐ๋ผ์ ๊ฐฑ์ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค.
์บ์ ์๊ฐ ์ด๊ณผ
์บ์ ์ ํจ ์๊ฐ์ด ์ด๊ณผํด์ ์๋ฒ์ ๋ค์ ์์ฒญํ๋ฉด, ๋ค์ ๋ ๊ฐ์ง ์ํฉ์ด ๋ํ๋๋ค.
- ์๋ฒ์์ ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋ค. ๐ → ๐
- ์๋ฒ์์ ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ์ง ์๋๋ค. ๐
์บ์ ๋ง๋ฃํ์๋ ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ์ง ์๋ ๊ฒฝ์ฐ !!
- ์๊ฐํด๋ณด๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๋์ ์ ์ฅํด ๋์๋ ์บ์๋ฅผ ์ฌ์ฌ์ฉํ ์ ์๋ค.
- ๋จ, ํด๋ผ์ด์ธํธ์ ๋ฐ์ดํฐ์ ์๋ฒ์ ๋ฐ์ดํฐ๊ฐ ๊ฐ๋ค๋ ์ฌ์ค์ ํ์ธํ ์ ์๋ ๋ณ๋์ ๋ฐฉ๋ฒ์ด ํ์ํ๋ค.
๊ฒ์ฆ ํค๋ ์ถ๊ฐ
![](https://blog.kakaocdn.net/dn/qh8DW/btsCLrTVrpu/KCAgCh3krgzwDpRZdb9YU0/img.png)
![](https://blog.kakaocdn.net/dn/caiasr/btsCOACxSSH/ffsaSAiuyxf9Xs5bzZSUI1/img.png)
์ด๋ ๊ฒ ์บ์์ ์ ํจํ ์๊ฐ + ๋ฐ์ดํฐ ์ต์ข ์์ ์ผ ์ ๋ณด๋ฅผ ํจ๊ป ๋ณด๊ดํด
![](https://blog.kakaocdn.net/dn/oYuwt/btsCQrFlO7N/kkDYSgXQEqyvR25U4SQ6HK/img.png)
![](https://blog.kakaocdn.net/dn/zUgAN/btsCK72g8Ar/TayWnShl0RyeUMAVV7FpOK/img.png)
์๋ฒ์์ if-modified-since header์ ์์ฑ๋ ์ต์ข ์์ ์ผ ์ ๋ณด๋ฅผ ์ด์ฉํด ๋ฐ์ดํฐ๊ฐ ์์ ๋์๋์ง ์ฌ๋ถ๋ฅผ ํ๋จํ๊ณ
![](https://blog.kakaocdn.net/dn/bJjQpA/btsCK8NzMJ0/M4sAjWpUlKa3x5d3RutRF1/img.png)
![](https://blog.kakaocdn.net/dn/dIPyBO/btsCEIoSsZq/SHX9krV3m6rCaqVQ93OGt0/img.png)
304 Not Modified๋ฅผ ์ด์ฉํ๋ฉด, HTTP Body๋ฅผ ์๋ตํ๊ณ response message๋ฅผ ์ ์กํ๋ ๊ตฌ์กฐ๋ก ๋์ํด์,
๊ธฐ์กด์ 1.1M์ ๋คํธ์ํฌ ์ฌ์ฉ๋์ ์ฐจ์งํ๋ ๋ฐฉ์์ 0.1M๋ง ์ ์ ํ๋๋ก ๋์ฒดํ ์ ์๊ฒ ๋๋ค.
304 Not Modified response๋ฅผ ๋ฐ์ client๋ cache์ ์๋ ๋ฐ์ดํฐ์ ์ ํจ ์๊ฐ์ ๊ฐฑ์ (60์ด๋ก)ํด์ ๋ค์ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.
์กฐ๊ฑด๋ถ ์์ฒญ1 - ์ ๋ฆฌ
์ด ์ํฉ์์๋ ๊ฒ์ฆ ํค๋(Last-Modified)์ ์กฐ๊ฑด๋ถ ์์ฒญ(if-modified-since)๋ฅผ ๊ฐ์ด ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ํฉ์ด๋ค.
- ์บ์ ์ ํจ ์๊ฐ์ด ์ด๊ณผํด๋, ์๋ฒ์ ๋ฐ์ดํฐ๊ฐ ๊ฐฑ์ ๋์ง ์์ผ๋ฉด
- 304 Not Modified + ํค๋ ๋ฉํ ์ ๋ณด๋ง ์๋ต (body X)
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ๊ฐ ๋ณด๋ธ ์๋ต ํค๋์ ์ ๋ณด๋ก ์บ์์ ๋ฉํ ์ ๋ณด ๊ฐฑ์
- ํด๋ผ์ด์ธํธ๋ ์บ์์ ์ ์ฅ๋์ด ์๋ ๋ฐ์ด
- ํฐ๋ฅผ ์ฌํ์ฉ
- ๊ฒฐ๊ณผ์ ์ผ๋ก ๋คํธ์ํฌ ๋ค์ด๋ก๋๊ฐ ๋ฐ์ํ์ง๋ง, ์ฉ๋์ด ์ ์ ํค๋ ์ ๋ณด๋ง ๋ค์ด๋ก๋
- ๋งค์ฐ ์ค์ฉ์ ์ธ ํด๊ฒฐ์ฑ !
๐ฑ ๊ฒ์ฆ ํค๋์ ์กฐ๊ฑด๋ถ ์์ฒญ2
- ๊ฒ์ฆ ํค๋
- ์บ์ ๋ฐ์ดํฐ์ ์๋ฒ ๋ฐ์ดํฐ๊ฐ ๊ฐ์์ง ๊ฒ์ฆํ๋ ๋ฐ์ดํฐ
- Last-Modified, ETag ํฌ๊ฒ ๋๊ฐ์ง๊ฐ ์์
- ์กฐ๊ฑด๋ถ ์์ฒญ ํค๋
- ๊ฒ์ฆ ํค๋๋ก ์กฐ๊ฑด์ ๋ฐ๋ฅธ ๋ถ๊ธฐ์ ์ฌ์ฉ
- If-Modified-Since: Last-Modified๋ฅผ ์ฌ์ฉ
- If-None-Match: ETag ์ฌ์ฉ
- ์กฐ๊ฑด์ด ๋ง์กฑํ๋ฉด 200 OK
- ์กฐ๊ฑด์ด ๋ง์กฑํ์ง ์์ผ๋ฉด, 304 Not Modified
If-Modified-Since: ์ดํ์ ๋ฐ์ดํฐ๊ฐ ์์ ๋์์ผ๋ฉด?
- ๋ฐ์ดํฐ ๋ฏธ๋ณ๊ฒฝ ์์
- ์บ์: 2020๋ 11์ 10์ผ 10:00:00 vs ์๋ฒ: 2020๋ 11์ 10์ผ 10:00:00
- 304 Not Modified, ํค๋ ๋ฐ์ดํฐ๋ง ์ ์กํ๋ค. (body X)
- ๋ฐ๋ผ์ ์ ์ก ์ฉ๋ 0.1MB (ํค๋ 0.1MB)
- ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์์
- ์บ์: 2020๋ 11์ 10์ผ 10:00:00 vs ์๋ฒ: 2020๋ 11์ 10์ผ 11:00:00
- 200 OK, ๋ชจ๋ ๋ฐ์ดํฐ ์ ์ก (body o)
- ๋ฐ๋ผ์ ์ ์ก ์ฉ๋ 1.1MB (ํค๋ 0.1MB, ๋ฐ๋ 1MB)
Last-Modified, If-Modified-Since์ ๋จ์
- 1์ด ๋ฏธ๋ง(0.x์ด) ๋จ์๋ก ์บ์ ์กฐ์ ์ด ๋ถ๊ฐ๋ฅํ๋ค.
- ๋ ์ง ๊ธฐ๋ฐ์ ์ ํด์ง ๋ก์ง์ ์ฌ์ฉํด์ผ ํ๋ค
- ๋ฐ์ดํฐ๋ฅผ ์์ ํด์ ๋ ์ง๊ฐ ๋ฌ๋ผ์ก์ง๋ง, ์ค์ง์ ์ผ๋ก ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์์ ํด ๊ฒฐ๊ณผ๊ฐ ๋๊ฐ์ ๊ฒฝ์ฐ
- ์๋ฒ์์ ๋ณ๋์ ์บ์ ๋ก์ง์ ๊ด๋ฆฌํ๊ณ ์ถ์ ๊ฒฝ์ฐ
- ์) ์คํ์ด์ค๋ ์ฃผ์์ฒ๋ผ ํฌ๊ฒ ์ํฅ์ด ์๋ ๋ณ๊ฒฝ์์ ์บ์๋ฅผ ์ ์งํ๊ณ ์ถ์ ๊ฒฝ์ฐ
- ์์ ๋ ๊ฒฝ์ฐ๋ฅผ ๋ค๋ฃฐ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค.
ETag, If-None-Match
- ETag (Entity Tag)
- ์บ์์ฉ ๋ฐ์ดํฐ์ ์์์ ๊ณ ์ ํ ๋ฒ์ ์ด๋ฆ์ ๋ฌ์๋๋ ๊ตฌ์กฐ
- ์) ETag: "v1.0", ETag: "a2jiodwjekjl3" => ๋ฒ์ ์ผ๋ก ๋ฌ ์๋ ์๊ณ , Hash ๊ฐ์ผ๋ก ํ ์๋ ์๋ค.
- ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด, ์ด ์ด๋ฆ์ ๋ฐ๊พธ์ด ๋ณ๊ฒฝํ๋ค. (Hash๋ฅผ ๋ค์ ์์ฑ)
- ์) ETag: "aaaaa" -> ETag: "bbbbb"
- ์ง์ง ๋จ์ํ๊ฒ ETag๋ง ๋ณด๋ด์ ๊ฐ์ผ๋ฉด ์ ์งํ๊ณ , ๋ค๋ฅด๋ฉด ๋ค์ ๋ฐ๋๋ค!!
![](https://blog.kakaocdn.net/dn/cPQ2yA/btsCLrTVrqO/UebMrXWk8Kp3i3mJhXkQDk/img.png)
![](https://blog.kakaocdn.net/dn/pKwpN/btsCG5jINkh/V47nensio6WCnWspdVUpOk/img.png)
ETag header์ ๊ฐ์ ํฌํจํด์ ๋ฐ์ดํฐ๋ฅผ cache์ ์ ์ฅํ๋ค.
![](https://blog.kakaocdn.net/dn/Iems4/btsCKrNrf0M/XvAkYBvMoxMk9MCX1mDg60/img.png)
![](https://blog.kakaocdn.net/dn/cKnhZ0/btsCEII5ga7/akqgbbWdgvwYodDgYhQ5S1/img.png)
![](https://blog.kakaocdn.net/dn/bsi58M/btsCG4d9mR0/i6vQ7O5RDcfldwWu5qhO61/img.png)
ETag, If-None-Match ์ ๋ฆฌ
- ์ง์ง ๋จ์ํ๊ฒ ETag๋ง ์๋ฒ์ ๋ณด๋ด์ ๊ฐ์ผ๋ฉด ์ ์งํ๊ณ , ๋ค๋ฅด๋ฉด ๋ค์ ๋ฐ๊ธฐ!
- ์บ์ ์ ์ด ๋ก์ง์ ์๋ฒ์์ ์์ ํ๊ฒ ๊ด๋ฆฌํ๋ค.
- ํด๋ผ์ด์ธํธ๋ ๋จ์ํ ์ด ๊ฐ์ ์๋ฒ์ ์ ๊ณต(ํด๋ผ์ด์ธํธ๋ ์บ์ ๋ฉ์ปค๋์ฆ์ ๋ชจ๋ฆ)
- ์์)
- ์๋ฒ๋ ๋ฐฐํ ์คํ ๊ธฐ๊ฐ์ธ 3์ผ ๋์ ํ์ผ์ด ๋ณ๊ฒฝ๋์ด๋ ETag๋ฅผ ๋์ผํ๊ฒ ์ ์งํ๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ ์ฃผ๊ธฐ์ ๋ง์ถฐ ETag๋ฅผ ๋ชจ๋ ๊ฐฑ์
๐ฑ ์บ์์ ์กฐ๊ฑด๋ถ ์์ฒญ ํค๋
- Cache-Control: ์บ์ ์ ์ด
- Pragma: ์บ์ ์ ์ด(ํ์ ํธํ)
- Expires: ์บ์ ์ ํจ ๊ธฐ๊ฐ(ํ์ ํธํ)
Cache-Control - ์บ์ ์ง์์ด(directives)
- Cache-Control: max-age
- ์บ์ ์ ํจ ์๊ฐ, ์ด ๋จ์๋ก ์์ฑ
- Cache-Control: no-cache
- ๋ฐ์ดํฐ๋ ์บ์ํด๋ ๋์ง๋ง, ํญ์ ์บ์๋ฅผ ์ฐ๊ธฐ ์ ์ ์(origin) ์๋ฒ์ ๊ฒ์ฆํ๊ณ ์ฌ์ฉ
(๋ก์ปฌ ์บ์์ ์๋ ์ ๋ณด๊ฐ ๋ฐ๋์๋์ง ์ฌ๋ถ๋ฅผ ํญ์ ์๋ฒ์ ๊ฒ์ฆ์ ๋ฐ๊ณ ์ฌ์ฉํด๋ผ)
- ๋ฐ์ดํฐ๋ ์บ์ํด๋ ๋์ง๋ง, ํญ์ ์บ์๋ฅผ ์ฐ๊ธฐ ์ ์ ์(origin) ์๋ฒ์ ๊ฒ์ฆํ๊ณ ์ฌ์ฉ
- Cache-Control: no-store
- ๋ฐ์ดํฐ์ ๋ฏผ๊ฐํ ์ ๋ณด๊ฐ ์์ผ๋ฏ๋ก ์ ์ฅํ๋ฉด ์๋จ
(๋ฉ๋ชจ๋ฆฌ์์ ์ฌ์ฉํ๊ณ ์ต๋ํ ๋นจ๋ฆฌ ์ญ์ ํด๋ผ)
- ๋ฐ์ดํฐ์ ๋ฏผ๊ฐํ ์ ๋ณด๊ฐ ์์ผ๋ฏ๋ก ์ ์ฅํ๋ฉด ์๋จ
Pragma - ์บ์ ์ ์ด(ํ์ ํธํ)
- Pragma: no-cache
- HTTP 1.0 ํ์ ํธํ์ด๋ผ๊ณ ํ๋ค.
- ์ง๊ธ์ ๊ฑฐ์ ์ฌ์ฉ X
Expires - ์บ์ ๋ง๋ฃ์ผ ์ง์ (ํ์ ํธํ)
- expires: Mon, 01 Jan 1990 00:00:00 GMT
- ์บ์ ๋ง๋ฃ์ผ์ ์ ํํ ๋ ์ง๋ก ์ง์ → ์ ํํ์ง X
- HTTP 1.0๋ถํฐ ์ฌ์ฉ
- ์ง๊ธ์ ๋ ์ ์ฐํ Cache-Control: max-age๋ฅผ ๊ถ์ฅ
- ์ง๊ธ ๋ฒ์ ์์ Cache-Control: max-age์ ํจ๊ป ์ฌ์ฉํ๋ฉด Expires๋ ๋ฌด์๋๋ค.
๊ฒ์ฆ ํค๋์ ์กฐ๊ฑด๋ถ ์์ฒญ ํค๋
- ๊ฒ์ฆ ํค๋ (Validator)
- ETag: "v1.0", ETag: "asdfkas;l09"
- Last-Modified: Thu, 04 Jum 2020 07:19:24 GMT
- ์กฐ๊ฑด๋ถ ์์ฒญ ํค๋ (ํน์ ํค๋์ ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ์กฐ๊ฑด์ ๋ฐ๋ฅธ ๋ถ๊ธฐ๋ฅผ ์ํ ๋ ์ฌ์ฉ)
- If-Match, If-None-Match: ETag ๊ฐ์ ์ฌ์ฉํ๋ค.
- If-Modified-Since, If-Unmodified-Since: Last-Modfied ๊ฐ์ ์ฌ์ฉํ๋ค.
๐ฑ ํ๋ก์ ์บ์
![](https://blog.kakaocdn.net/dn/baOLko/btsCOErsD1a/aRjykh5EeagnZ1cNnbRhXk/img.png)
![](https://blog.kakaocdn.net/dn/8P2VS/btsCG3fbPwC/D5fspFBknWUbl2zKM4NwHk/img.png)
proxy cache๋ผ๋ ์๋ฒ๋ฅผ ๋์ ํด์ ๋ธ๋ผ์ฐ์ (ํด๋ผ์ด์ธํธ์)๊ฐ ์(origin) ์๋ฒ๊ฐ ์๋ proxy cache ์๋ฒ๋ฅผ ๊ฑฐ์ณ์ค๋๋ก ๋ง๋ ๋ค.
์ด ํ๋ก์ ์บ์ ์๋ฒ๋ ํ๊ตญ ์ด๋๊ฐ์,, → ์๋ต ์๋๊ฐ ํจ์ฌ ๋น ๋ฅผ ๊ฒ์ด๋ค.
์ ํ๋ธ ๊ฐ์ ๊ฒ๋ค๋ ์ฌ๋๋ค์ด ์ ๋ณด๋ ์ฝํ ์ธ ๋ฅผ ํ๋ฉด ์ค๋ ๊ฑธ๋ฆฌ๊ณ , ์ฌ๋๋ค์ด ๋ง์ด ๋ณด๋ ์ปจํ ์ธ ๊ฐ ๋นจ๋ฆฌ ๋ฌ๋ค.
์ด๊ฒ ๋ํ ํ๋ก์ ์บ์ ์๋ฒ์ ์ํฅ์ด๋ค.
ํ์ฌ๋ ๋๋ถ๋ถ ์ด๋ฌํ cdn ์๋น์ค๋ฅผ ์ด์ฉํ๋ค๊ณ ํ๋ค.
private cache: ๋ด ๋ก์ปฌ ํ๊ฒฝ์ด๋ ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ๋๋ ์บ์
public cache: ์ฌ๋ฌ ์ ์ ๊ฐ ๊ณต์ฉํด์ ์ฌ์ฉํ๋ ์บ์
Cache-Control - ์บ์ ์ง์์ด (๊ธฐํ)
- Cache-Control: public
- ์๋ต์ด public ์บ์์ ์ ์ฅ๋์ด๋ ๋จ
- Cache-Control: private
- ์๋ต์ด ํด๋น ์ฌ์ฉ์๋ง์ ์ํ ๊ฒ์, private cache์ ์ ์ฅํด์ผ ํจ (๊ธฐ๋ณธ๊ฐ)
- Cache-Control: s-maxage
- ํ๋ก์ ์บ์์๋ง ์ ์ฉ๋๋ max-age
- Age: 60 (HTTP ํค๋)
- ์ค๋ฆฌ์ง ์๋ฒ์์ ์๋ต ํ ํ๋ก์ ์บ์ ๋ด์ ๋จธ๋ฌธ ์๊ฐ (์ด)
๐ฑ ์บ์ ๋ฌดํจํ
Cache-Control - ํ์คํ ์บ์ ๋ฌดํจํ ์๋ต
์บ์๋ฅผ ์ฌ์ฉํ์ง ์์๋, ๋ธ๋ผ์ฐ์ ๊ฐ ์์์ ์ฌ์ฉ์์ ๋ง๊ฒ ์บ์ฑํ๋ ๊ฒฝ์ฐ๊ฐ ์์ด ์บ์๋ก ์ฌ์ฉํ์ง ์๊ธฐ ์ํด์๋ ์๋์ ์ค์ ๋ค์ ๋ชจ๋ ํด์ค์ผ ํ๋ค.
์ด ํ์ด์ง๋ ์ง์ง ์บ์ ํ๋ฉด ์๋ผ!!
โฌ๏ธ โฌ๏ธ โฌ๏ธ
- Cache-Control: no-cache, no-store, must-revalidate
- Progma: no-cache
์บ์ ์ง์์ด - ํ์คํ ์บ์ ๋ฌดํจํ
- Cache-Control: no-cache
- ๋ฐ์ดํฐ๋ ์บ์ํด๋ ๋์ง๋ง, ํญ์ ์ ์๋ฒ์ ๊ฒ์ฆํ๊ณ ์ฌ์ฉ(์ด๋ฆ์ ์ฃผ์!)
- Cache-Control: no-store
- ๋ฐ์ดํฐ์ ๋ฏผ๊ฐํ ์ ๋ณด๊ฐ ์์ผ๋ฏ๋ก ์ ์ฅํ๋ฉด ์๋จ (๋ฉ๋ชจ๋ฆฌ์์ ์ฌ์ฉํ๊ณ ์ต๋ํ ๋นจ๋ฆฌ ์ญ์ )
- Cache-Control: must-revalidate
- ์บ์ ๋ง๋ฃ ํ ์ต์ด ์กฐํ ์ ์ ์๋ฒ์ ๊ฒ์ฆํด์ผ ํจ
- ์ ์๋ฒ ์ ๊ทผ ์คํจ ์ ๋ฐ๋์ ์ค๋ฅ๊ฐ ๋ฐ์ํด์ผ ํจ - 504(Gateway Timeout)
- must-revalidate๋ ์บ์ ์ ํจ ์๊ฐ์ด๋ผ๋ฉด ์บ์๋ฅผ ์ฌ์ฉํจ
- Pragma: no-cache
- HTTP 1.0 ํ์ ํธํ
![](https://blog.kakaocdn.net/dn/bQU7gx/btsCBKgbSAg/RrCMxZ1KJSjGyQvmtKSAKk/img.png)
![](https://blog.kakaocdn.net/dn/wvENz/btsCF7II90x/yK0xXkAo760ric96VRiom1/img.png)
no-cache๋ cache ์๋ฒ์ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ ๊ฐ์ ธ๋ค ์ฐ๊ฑฐ๋, ํน์ ์ ์๋ฒ ๊ฒ์ฆ ๊ณผ์ ์์ ๋คํธ์ํฌ ๋จ์ ๊ฐ์ ์ค๋ฅ๋ก ์ ์๋ฒ์ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ์ ์ค๋ฅ๋ฅผ ๋ฐ์์ํค๊ธฐ ๋ณด๋ค๋ ์ค๋๋ ๋ฐ์ดํฐ๋ผ๋ ์ ์กํ๋ ์์ผ๋ก ๋์ํ๋ค.
![](https://blog.kakaocdn.net/dn/xSGLL/btsCCyUjcTX/bEi7XzmnqXbZZKRjfg9VvK/img.png)
๊ทธ์ ๋ฐํด์, must-revalidate๋ ์ ์๋ฒ์ ์ ๊ทผํ ์ ์๋ ๊ฒฝ์ฐ ๋ฌด์กฐ๊ฑด 504 Gateway Timeout ์ค๋ฅ๋ฅผ ๋ฐ์์ํจ๋ค.
์ธํ๋ฐ ๊น์ํ ์ ์๋์ [๋ชจ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ HTTP ์น ๊ธฐ๋ณธ ์ง์] ์๊ฐ!!!
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard