๐Ÿ’ป Computer Science

08. HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ - ์บ์‹œ ๊ธฐ๋ณธ ๋™์ž‘

์• ์ •์“ฐ 2021. 5. 6. 15:51

2021.05.03 - [BASIC] - 01. HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ - ์ธํ„ฐ๋„ท ๋„คํŠธ์›Œํฌ

2021.05.03 - [BASIC] - 02. HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ - URI

2021.05.03 - [BASIC] - 03. HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ - ๋ชจ๋“ ๊ฒƒ์ด HTTP

2021.05.03 - [BASIC] - 04. HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ - HTTP API

2021.05.04 - [BASIC] - 05. HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ - ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ ์ „์†ก

2021.05.04 - [BASIC] - 06. HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ - HTTP ์ƒํƒœ์ฝ”๋“œ ์†Œ๊ฐœ

2021.05.06 - [BASIC] - 07. HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ - HTTP ํ—ค๋” ๊ฐœ์š”

 

์บ์‹œ์™€ ์กฐ๊ฑด๋ถ€ ์š”์ฒญ

 

์บ์‹œ๊ฐ€ ์—†์„ ๋•Œ - ์ฒซ ๋ฒˆ์งธ ์š”์ฒญ์ด๋“  ์—ฌ๋Ÿฌ๋ฒˆ ์š”์ฒญ์ด๋“  ๊ฐ™์€ ์šฉ๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ„์† ์‘๋‹ตํ•œ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด๋ฏธ์ง€๋ฅผ ์š”์ฒญํ•œ๋‹ค -> ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ๋ณด๋‚ธ๋‹ค.

 

๋ฌธ์ œ์ 

๋ฐ์ดํ„ฐ์˜ ๋ณ€๊ฒฝ์ด ์—†์–ด๋„ ๊ณ„์† ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์šด ๋ฐ›์•„์•ผ ํ•œ๋‹ค. -> ์ธํ„ฐ๋„ท ๋„คํŠธ์›Œํฌ๋Š” ๋งค์šฐ ๋Š๋ฆฌ๊ณ  ๋น„์‹ธ๋‹ค.

๋ธŒ๋ผ์šฐ์ € ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋Š๋ ค์ง€๋ฉด์„œ ๋Š๋ฆฐ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์ด ์ƒ๊ฒจ๋‚œ๋‹ค.

 

์บ์‹œ ์ ์šฉ - ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ๋ฐ›๊ณ   cache-control: max-age=60 ๋ฅผ header์— ๋„ฃ๊ณ  ์š”์ฒญ ๋ฆฌ์†Œ์Šค์™€ ๊ฐ™์ด ์‘๋‹ตํ•ด์ค€๋‹ค. ์‘๋‹ต์„ ๋ฐ›์€ ํด๋ผ์–ธํŠธ๋Š” ์‘๋‹ต๋ฐ›์€ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ์— ์ €์žฅํ•œ๋‹ค (์ด๋•Œ ๋ฆฌ์†Œ์Šค๋Š” ์„œ๋ฒ„๊ฐ€ max-age๋กœ ์ง€์ •ํ•œ ์‹œ๊ฐ„๋งŒํผ ์œ ํšจํ•˜๊ฒŒ ๋œ๋‹ค)

๋‘๋ฒˆ ์งธ ์š”์ฒญ ํ•  ๋•Œ ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ๋ฅผ ๋จผ์ € ํ™•์ธ ํ›„ ์บ์‹œ๊ฐ€ ์œ ํšจํ•  ๊ฒฝ์šฐ ๋ฐ”๋กœ ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค (์บ์‹œ ๊ฐ€๋Šฅ ์‹œ๊ฐ„๋™์•ˆ  ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค)

์บ์‹œ ์‹œ๊ฐ„์ด ์ดˆ๊ณผํ• ์‹œ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ์กฐํšŒํ•˜๊ณ  ๊ฐฑ์‹ ํ•œ๋‹ค! == ๋‹ค์‹œ ๋„คํŠธ์›Œํฌ ๋‹ค์šด๋กœ๋“œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

์บ์‹œ ์œ ํšจ ์‹œ๊ฐ„์ด ์ดˆ๊ณผํ•ด์„œ ๋‹ค์‹œ ์š”์ฒญํ• ์‹œ

1. ์„œ๋ฒ„์—์„œ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ–ˆ๋‹ค.

2. ์„œ๋ฒ„์—์„œ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•˜๋‹ค.

 

2๋ฒˆ์„ ๋ดค์„ ๋•Œ ์žฌ ์š”์ฒญ์„ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๋ฐ›๋Š”๊ฒƒ์ด ๋น„ํšจ์œจ์ ์ด๋‹ค. ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ฒ€์ฆ ํ—ค๋”๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.

 

๊ฒ€์ฆ ํ—ค๋”

์บ์‹œ ๋ฐ์ดํ„ฐ์™€ ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ™์€์ง€ ๊ฒ€์ฆํ•˜๋Š” ๋ฐ์ดํ„ฐ

 

if-Modified-Since , Last-modified : Last-Modified ๊ฐ’ ์‚ฌ์šฉ

์ฒซ ๋ฒˆ์งธ ์š”์ฒญ -> ์„œ๋ฒ„์—์„œ Last-Modified ๋ฅผ header์— ์ถ”๊ฐ€ ํ•ด์ค€๋‹ค. ( ํŒŒ์ผ์˜ ๋งˆ์ง€๋ง‰ ์ˆ˜์ •์ผ )

-> ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ์— ๋ฐ์ดํ„ฐ ์ตœ์ข… ์ˆ˜์ •์ผ์„ ๊ธฐ๋กํ•œ๋‹ค.

 

๋‘ ๋ฒˆ์งธ ์š”์ฒญ -> ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ์— ์œ ํšจ ์‹œ๊ฐ„์ด ์ง€๋‚˜์„œ ๋‹ค์‹œ ์š”์ฒญ์„ ํ•˜๊ฒŒ ๋œ๋‹ค

-> ์ด ๋–„ ๋ถ€๋ผ์šฐ์ €๊ฐ€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ฐ์ดํ„ฐ ์ตœ์ข… ์ˆ˜์ •์ผ์„ ํ™•์ธํ•˜์—ฌ ์š”์ฒญ์‹œ header์— if-modified-since : (๋‚ ์งœ) ๋ฅผ ํฌํ•จํ•ด์„œ ์š”์ฒญํ•œ๋‹ค.

-> ์„œ๋ฒ„์—์„œ ์ตœ์ข… ์ˆ˜์ •์ผ์„ ํ™•์ธํ•ด์„œ ์žฌ์—…๋กœ๋“œ ํ• ์ง€ ๊ทธ๋Œ€๋กœ ์จ์•ผ ํ• ์ง€ ํŒ๋‹จํ•œ๋‹ค - ์ˆ˜์ •์ด ์—†์„์‹œ 304 Not Modified + ํ—ค๋” ๋ฉ”ํƒ€ ์ •๋ณด๋งŒ ์‘๋‹ต (body๋ฅผ ๋น„์›Œ์„œ) -> ํด๋ผ์ด์–ธํŠธ๋Š” ์ƒํƒœ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ์—์„œ ๊บผ๋‚ด์„œ ์“ด๋‹ค

* ์ˆ˜์ •์ด ์žˆ์„ ์‹œ ์š”์ฒญ์˜ ๋Œ€ํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์‘๋‹ต

 

์บ์‹œ ์œ ํšจ ์‹œ๊ฐ„์ด ์ดˆ๊ณผํ•ด๋„, ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐฑ์‹ ๋˜์ง€ ์•Š์œผ๋ฉด ์„œ๋ฒ„๊ฐ€ ๋ณด๋‚ธ ์‘๋‹ต ํ—ค๋” ์ •๋ณด๋กœ ํด๋ผ์ด์–ธํŠธ๋Š” ์บ์‹œ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์žฌํ™œ์šฉํ•œ๋‹ค. 

๋„คํŠธ์›Œํฌ ๋‹ค์šด๋กœ๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€๋งŒ ์šฉ๋Ÿ‰์ด ์ ์€ ํ—ค๋” ์ •๋ณด๋งŒ์„ ๋ฐ›๊ฒŒ ๋œ๋‹ค!

 

์กฐ๊ฑด๋ถ€ ์š”์ฒญ ํ—ค๋”

๊ฒ€์ฆ ํ—ค๋”๋กœ ์กฐ๊ฑด์— ๋”ฐ๋ฅธ ๋ถ„๊ธฐ

 

if-Modified-Since : Last-modified ์˜ ๋‹จ์ 

- 1์ดˆ ๋ฏธ๋งŒ ๋‹จ์œ„๋กœ ์บ์‹œ ์กฐ์ •์ด ๋ถˆ๊ฐ€๋Šฅ

- ๋‚ ์งœ ๊ธฐ๋ฐ˜์˜ ๋กœ์ง ์‚ฌ์šฉ

- ๋ฐ์ดํ„ฐ ์ˆ˜์ •ํ•ด์„œ ๋‚ ์งœ๊ฐ€ ๋‹ค๋ฅด์ง€๋งŒ, ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•ด์„œ ๋ฐ์ดํ„ฐ ๊ฒฐ๊ณผ๊ฐ€ ๋˜‘๊ฐ™์€ ๊ฒฝ์šฐ์—๋„ ์žฌ์—…๋กœ๋“œ 

- ์„œ๋ฒ„์—์„œ ๋ณ„๋„์˜ ์บ์‹œ ๋กœ์ง์„ ๊ด€๋ฆฌํ•˜์ง€ ๋ชปํ•จ ์˜ˆ) ์ŠคํŽ˜์ด์Šค๋‚˜ ์ฃผ์„์ฒ˜๋Ÿผ ์˜ํ–ฅ์ด ์—†๋Š” ๋ณ€๊ฒฝ์—์„œ ์บ์‹œ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ 

 

if-None-Match, if-Match :  ETag(Entity Tag) ๊ฐ’ ์‚ฌ์šฉ

์บ์‹œ์šฉ ๋ฐ์ดํ„ฐ์— ์ž„์˜์˜ ๊ณ ์œ ํ•œ ๋ฒ„์ „ ์ด๋ฆ„์„ ๋‹ฌ์•„๋‘ 

๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์ด ์ด๋ฆ„์„ ๋ฐ”๊พธ์–ด์„œ ๋ณ€๊ฒฝํ•จ (Hash๋ฅผ ๋‹ค์‹œ ์ƒ์„ฑ)

 --> ์ง„์งœ ๋‹จ์ˆœํ•˜๊ฒŒ ETag๋งŒ ๋ณด๋‚ด์„œ ๊ฐ™์œผ๋ฉด ์œ ์ง€, ๋‹ค๋ฅด๋ฉด ๋‹ค์‹œ ๋ฐ›๊ธฐ

 --> ์บ์‹œ ์ œ์–ด ๋กœ์ง์„ ์„œ๋ฒ„์—์„œ ์™„์ „ํžˆ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 --> ํด๋ผ์ด์–ธํŠธ์—์„œ๋Š” ์บ์‹œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๋ชจ๋ฅธ๋‹ค. 

 

์˜ˆ) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ ์ฃผ๊ธฐ์— ๋งž์ถ”์–ด ETag๋ฅผ ๋ชจ๋‘ ๊ฐฑ์‹ ํ•œ๋‹ค. 

 

 

์บ์‹œ ์ œ์–ด ํ—ค๋”

Cache-Control : ์บ์‹œ ์ง€์‹œ์–ด(directives)

max-age : ์บ์‹œ ์œ ํšจ ์‹œ๊ฐ„, ์ดˆ ๋‹จ์œ„

no-cashe : ๋ฐ์ดํ„ฐ๋Š” ์บ์‹œํ•ด๋„ ๋˜์ง€๋งŒ, ํ•ญ์ƒ ์›(origin) ์„œ๋ฒ„์— ๊ฒ€์ฆํ•˜๊ณ  ์‚ฌ์šฉ

no-store : ๋ฐ์ดํ„ฐ์— ๋ฏผ๊ฐํ•œ ์ •๋ณด๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์ €์žฅํ•˜๋ฉด ์•ˆ๋จ - ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ์‚ญ์ œ 

 

Cache-Contro- ๊ธฐํƒ€

Cache-Control :public -> ์‘๋‹ต์ด public ์บ์‹œ์— ์ €์žฅ๋˜์–ด๋„ ๋จ

Cashe-Control:private -> ์‘๋‹ต์ด ํ•ด๋‹น ์‚ฌ์šฉ์ž๋งŒ์„ ์œ„ํ•œ ๊ฒƒ, private ์บ์‹œ์— ์ €์žฅํ•ด์•ผ ํ•จ

Cashe-Cotrol: s-maxage -> ํ”„๋ก์‹œ ์บ์‹œ์—๋งŒ ์ ์šฉ๋˜๋Š” max-age

Age: 60 -> Httml ํ—ค๋”, ์˜ค๋ฆฌ์ง„ ์„œ๋ฒ„์—์„œ ์‘๋‹ต ํ›„ ํ”„๋ก์‹œ ์บ์‹œ ๋‚ด์— ๋จธ๋ฌธ ์‹œ๊ฐ„(ํ˜ธ)

 

Pragma: ์บ์‹œ ์ œ์–ด(ํ•˜์œ„ ํ˜ธํ™˜)

HTTP1.0ํ•˜์œ„ ํ˜ธํ™˜

 

Expires : ์บ์‹œ ๋งŒ๋ฃŒ์ผ ์ง€์ •(ํ•˜์œ„ ํ˜ธํ™˜)

์บ์‹œ ๋งŒ๋ฃŒ์ผ์„ ์ •ํ™•ํ•œ ๋‚ ์งœ๋กœ ์ง€์ •

์ง€๊ธˆ์€ Cashe-Control: max-age ๊ถŒ์žฅํ•œ๋‹ค. -> ์ด๊ฒŒ ์‚ฌ์šฉ๋˜๋ฉด Expires๋Š” ๋ฌด์‹œ

 

 

ํ”„๋ก์‹œ ์บ์‹œ

์› ์„œ๋ฒ„ ์ง์ ‘ ์ ‘๊ทผ(origin ์„œ๋ฒ„)

 

์ฒซ ๋ฒˆ์งธ ์š”์ฒญ

๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ HTTP - ๊น€์˜ํ•œ / ์ธํ”„๋Ÿฐ

 

์บ์‹œ ๋ฌดํšจํ™”

์บ์‹œ๋ฅผ ์ ์šฉ ์•ˆํ•ด๋„ ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ž„์˜๋กœ ์บ์‹œ๋ฅผ ์ €์žฅํ•ด๋‘”๋‹ค. 

๊ทธ๋ ‡๊ธฐ ๋–„๋ฌธ์— ํ™•์‹คํ•œ ์บ์‹œ ๋ฌดํšจํ™”๋ฅผ ํ•ด์•ผํ•œ๋‹ค

 

Cache-Control: no-cashe, no-store, must-reavalidate

Pragma: no-cahse(HTTP1.0 ํ•˜ํœ˜ ํ˜ธํ™˜)

 

 

๋ฐ˜์‘ํ˜•