2021. 1. 17. 19:43ใ๐ Web

๋ณธ ํฌ์คํ ์ ์ฐ์ํ ํ์ ๋ค, ๊น์ํ ๋์ '๋ชจ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ HTTP ์น ๊ธฐ๋ณธ ์ง์' ๊ฐ์๋ฅผ ์๊ฐ ํ ์ ๋ฆฌํ ๊ธ์ ๋๋ค.
1. ์บ์ ๊ธฐ๋ณธ ๋์
-> ์๋์ ๊ฐ์ด star ์ด๋ฏธ์ง๋ฅผ ์์ฒญํ๋ฉด 1.1Mbyte ์ฉ๋์ ๋ฐ์ดํฐ๊ฐ ์ ์ก๋๋ค (ํค๋ + ์ด๋ฏธ์ง ์ฉ๋).
-> ์บ์๊ฐ ์์ ๋, ๋๋ฒ์งธ ์์ฒญ์ ํ๋ค๋ฉด ๋๊ฐ์ด 1.1Mbyte ์ฉ๋์ ๋ฐ์ดํฐ๊ฐ ์ ์ก๋๋ค (๊ฐ์ ์์ฒญ์ด๋, ๊ฐ์ ์ฉ๋ ์ ์ก)

2. ์บ์๊ฐ ์์ ๋,
-> ์๋ฒ์ธก์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์ง ์์๋ ๊ณ์ ๋คํธ์ํฌ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋ค์ด๋ฐ์์ผ ํ๋ค.
-> ๋๋ฆฌ๊ณ ๋น์ธ๋ฉฐ, ๋ธ๋ผ์ฐ์ ๋ก๋ฉ ์๋๊ฐ ๋๋ฆฌ๋ค = ๋๋ฆฐ ์ฌ์ฉ์ ๊ฒฝํ (slow ux)
3. ์บ์ ์ ์ฉํ ๋,
-> 1.1Mbyte์ ๋ฐ์ดํฐ๋ฅผ ์บ์ ์ ์ฅ์์ ์ ์ฅํ๋ค.
-> ๋๋ฒ์งธ ์์ฒญ์์ ์น ๋ธ๋ผ์ฐ์ ๋ ๋คํธ์ํฌ๋ฅผ ํ์ง ์๊ณ , ๋ธ๋ผ์ฐ์ ์บ์์์ ๊ณง ๋ฐ๋ก ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ์ ์๋ค.

4. Cache-control: Max-age = 60
-> 60์ด ๋์๋ง ์ ํจํ ์บ์.
-> 60์ด ์ดํ ๋ถํฐ๋, ์๋ฒ์์ ์๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ ์บ์์ ์ ์ฅํด์ผํ๋ค (์บ์ ๊ฐฑ์ ).
-> server์ ์บ์์ ๋ฐ์ดํฐ๊ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ๋ ๋ฐ์ํ ์ ์์์ ์ธ์งํ์ (์๋ฒ ๋ฐ์ดํฐ์ ์ ๋ฐ์ดํธ ๊ฒฝ์ฐ)
5. ์บ์ ์๊ฐ ์ด๊ณผ์ผ ๋,
- 1) ์๋ฒ์์ ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝ
- 2) ์๋ฒ์์ ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ์ง ์์ -> ์๊ฐ ์ด๊ณผ๋ ์บ์ ๋ฐ์ดํฐ์ ์๋ฒ ๋ฐ์ดํฐ๊ฐ ๊ฐ๋ค๋ ์ฌ์ค์ ํ์ธํ ์ ์๋ค๋ฉด, ๊ธฐ์กด ์บ์์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฌ์ฉ ๊ฐ๋ฅ
6. ๊ฒ์ฆ ํค๋ ์ถ๊ฐ < ์ฒซ ๋ฒ์งธ ์์ฒญ >
-> Header์ last-modified ๊ฒ์ฆ ํค๋ ์ถ๊ฐ
-> ๋ฐ์ดํฐ๊ฐ ๋ง์ง๋ง์ ์์ ๋ ์๊ฐ ํ์

7. ๊ฒ์ฆ ํค๋ ์ถ๊ฐ < ๋ ๋ฒ์งธ ์์ฒญ >


8. ๊ฒ์ฆ ํค๋(last-modified)์ ์กฐ๊ฑด๋ถ ์์ฒญ(if-modified-since)
-> 304 not Modified + ํค๋ ๋ฉํ ์ ๋ณด๋ง ์๋ต ๋๋ค. ( ๋ฐ๋ x )
-> ์บ์์ ๋ฉํ ์ ๋ณด๋ ์๋ฒ๊ฐ ๋ณด๋ธ ์๋ต ํค๋ ์ ๋ณด๋ก ๊ฐฑ์ ๋๋ค.
-> ํด๋ผ์ด์ธํธ๋ ์บ์์ ์ ์ฅ๋์ด ์๋ ๋ฐ์ดํฐ ์ฌํ์ฉ
-> ๊ฒฐ๊ณผ์ ์ผ๋ก, ๋คํธ์ํฌ ๋ค์ด๋ก๋๊ฐ ๋ฐ์ํ์ง๋ง, ์ฉ๋ ์ ์ ํค๋ ์ ๋ณด๋ง ๋ค์ด๋ก๋ํ๋ค => ๋งค์ฐ ์ค์ฉ์ ์ธ ํด๊ฒฐ์ฑ
9. ETag (Entity Tag)
-> ์บ์์ฉ ๋ฐ์ดํฐ์ ์์์ ๊ณ ์ ํ ๋ฒ์ ์ด๋ฆ์ ๋ฌ์๋๋ค. ex) ETag: 'v1.0', ETag: 'v2.0'
-> ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ์ด ์ด๋ฆ์ ๋ฐ๊พธ์ด ๋ณ๊ฒฝํจ (Hash๋ฅผ ๋ค์ ์์ฑ)
- ex) ETag: 'aaaa' --> ETag: 'bbbb'
10. ETag ๋์ ์๋ฆฌ-๊ฒฐ๊ณผ
-> ETag๋ง ๋ณด๋ด์ ๊ฐ์ผ๋ฉด ์ ์ง, ๋ค๋ฅด๋ฉด ๋ค์ ๋คํธ์ํฌ๋ฅผ ํ๋ค. (key-value ๋น๊ต ํ์)
-> ์บ์ ์ ์ฅ์์์ ๋ณด๋ธ ETag์ ์๋ฒ์ ETag๋ ์ด๋ฆ์ ๊ฐ์ง๋ง, hash ๋ฐฉ์์ด๊ธฐ์, value๊ฐ์ด ๋ค๋ฅผ ์ ์๋ค(๋ฐ์ดํฐ๊ฐ ์ ๋ฐ์ดํธ ๋์ ์).
-> ์ฆ, ETag๋ง ์๋ฒ์ ๋ณด๋ด ์ผ์น/๋ถ์ผ์น ์ฌ๋ถ๋ฅผ ํ์ธ ํ ์ ์๊ณ , ๊ทธ๋ฆฌํ์ฌ ์บ์์ ์ด ๋ก์ง์ ์๋ฒ์์ ์์ ํ ๊ด๋ฆฌํ ์ ์๊ฒ ๋๋ค.
11. ์บ์ ์ ์ด ํค๋
- Cache-control: ์บ์ ์ ์ด
- Pragma: ์บ์ ์ ์ด (ํ์ ํธํ)
- Expires: ์บ์ ์ ํจ ๊ธฐ๊ฐ (ํ์ ํธํ): ์บ์ ๋ง๋ฃ์ผ์ ์ ํํ ๋ ์ง๋ก ์ง์ -> ์ง๊ธ์ ๋ ์ ์ฐํ cache-control: max-age ๊ถ์ฅ
12. Cache-control
-> max-age: ์บ์ ์ ํจ ์๊ฐ, ์ด ๋จ์
-> no-cache: ๋ฐ์ดํฐ๋ ์บ์ํด๋ ๋์ง๋ง, ํญ์ origin ์๋ฒ์ ๊ฒ์ฆํ๊ณ ์ฌ์ฉ
-> no-store: ๋ฐ์ดํฐ์ ๋ฏผ๊ฐ ์ ๋ณด ์์ผ๋ฉด ์ ์ฅํ์ง ์๋๋ค.
13. ์กฐ๊ฑด๋ถ ์์ฒญ ํค๋
- if-match, if-none-match: ETag ๊ฐ ์ฌ์ฉ
- if-modified-since, if unmodified-since: last-modified ๊ฐ ์ฌ์ฉ
- ETag์ last-modified ๋์ ์๋ก ๋ฐ๋๋๋ค.
14. ํ๋ก์ ์บ์
-> ์์ฃผ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ฅผ proxy ์บ์ ์๋ฒ์ ๋ฐฐ์น
-> 0.5์ด ๊ฑธ๋ ค ๋ฏธ๊ตญ ์๋ฒ๊น์ง ๊ฐ์ง ์๊ณ , ํ๋ก์ ์๋ฒ์์ 0.1์ด๋ง์ ํด๊ฒฐํ๋ค.

-> cache-control: public -> ์๋ต์ด public ์บ์์ ์ ์ฅ๋์ด๋ ๋จ
-> cache-control: private -> ์๋ต์ด ํด๋น ์ฌ์ฉ์๋ง์ ์ํ ๊ฒ ( private ์บ์์ ์ ์ฅํด์ผํ๋ค(๊ธฐ๋ณธ๊ฐ) )
15. ์บ์ ๋ฌดํจํ
-> ํ์คํ ์บ์ ๋ฌดํจํ: ์ค์ํ ์ ๋ณด๋ ๋ฏผ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๊ฒฝ์ฐ ํ์คํ ์บ์๋ฅผ ๋ฌดํจํ ์ค์ ํด์ผํ๋ค.
16. Cache-control
- no-cache: ๋ฐ์ดํฐ๋ ์บ์ํด๋ ๋์ง๋ง, ํญ์ origin์๋ฒ์ ๊ฒ์ฆํ๊ณ ์ฌ์ฉ
- no-store: ๋ฐ์ดํฐ์ ๋ฏผ๊ฐํ ์ ๋ณด๊ฐ ์์ผ๋ฏ๋ก, ์ ์ฅํ๋ฉด ์๋๋ค.
- must-revalidate: ์บ์ ๋ง๋ฃ ํ ์ต์ด ์กฐํ์ origin ์๋ฒ์ ๊ฒ์ฆํ๊ณ ์ฌ์ฉ -> origin ์๋ฒ ์ ๊ทผ ์คํจ์ ๋ฐ๋์ ์ค๋ฅ๊ฐ ๋ฐ์ํด์ผํจ (504, Gateway Timeout)
17. no-cache์ must-revalidate์ ์ฐจ์ด
-> no-cache

-> must-revalidate

'๐ Web' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํฌ์๋ ํ๋ก์ ์ ๋ฆฌ๋ฒ์ค ํ๋ก์ (forward proxy, reverse proxy) (1) | 2021.08.24 |
---|---|
HTTP 401(Unauthorized), 403(Forbidden) ์ฐจ์ด (0) | 2021.06.20 |
7. HTTP ํค๋ 1 - ์ผ๋ฐ ํค๋ (0) | 2021.01.11 |
5. HTTP ๋ฉ์๋ ํ์ฉ (0) | 2021.01.03 |
4. HTTP ๋ฉ์๋ (0) | 2021.01.03 |