STUDY๐Ÿ„

[HTTP] 8. HTTP ํ—ค๋”2 - ์บ์‹œ์™€ ์กฐ๊ฑด๋ถ€ ์š”์ฒญ

์ด๋ฆฌ์ญ 2025. 3. 13. 17:41

์•ˆ๋…•ํ•˜์„ธ์š”!

๋ฒŒ์จ HTTP ๋งˆ์ง€๋ง‰ ์„น์…˜์ด์—์šฅ!!

์ €๋ฒˆ ์„น์…˜์— ์ด์–ด HTTP ํ—ค๋”๋ฅผ ํ•  ๊ฑด๋ฐ ์š”๋ฒˆ์—” ์บ์‹œ์™€ ์กฐ๊ฑด๋ถ€ ์š”์ฒญ์— ๊ด€ํ•ด์„œ ์ž…๋‹ˆ๋‹ค.

๊ณ ๊ณ !!


1. ์บ์‹œ ๊ธฐ๋ณธ ๋™์ž‘

์บ์‹œ๋Š” ๊ณผ์—ฐ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ• ๊นŒ์š”?

1-1. ์บ์‹œ๊ฐ€ ์—†์„ ๋•Œ

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

์šฐ์„  ์บ์‹œ๊ฐ€ ์—†์„ ๋•Œ์˜ ์ฒซ ๋ฒˆ์งธ ์š”์ฒญ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.

์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์— star.jpg๋ฅผ ์š”์ฒญํ•˜๊ณ , ์„œ๋ฒ„์—์„œ ์šฐ์„  star.jpg๊ฐ€ ์žˆ์œผ๋ฉด ์›จ ๋ธŒ๋ผ์šฐ์ €์— ๋ณด๋‚ด์ค๋‹ˆ๋‹ค.

์ฆ‰, ์„œ๋ฒ„๊ฐ€ ํ—ค๋”์™€ ๋ฐ”๋”” ํ•ฉ์ณ์„œ 1.1M ์šฉ๋Ÿ‰์˜ star.jpg๋ฅผ ์›น ๋ธŒ๋ผ์šฐ์ €์— ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค.

 

  • ๋‘ ๋ฒˆ์งธ ์š”์ฒญ

๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ์บ์‹œ๊ฐ€ ์—†์„ ๋•Œ ๋˜‘๊ฐ™์€ ์š”์ฒญ์„ ํ•œ ๋ฒˆ ๋” ํ–ˆ์Šต๋‹ˆ๋‹ค.

์„œ๋ฒ„์—์„œ๋Š” ๋˜ ๋˜‘๊ฐ™์ด ์š”์ฒญ์„ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์„œ๋ฒ„๋Š” ๋˜ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค์–ด์„œ ํ—ค๋”์™€ ๋ฐ”๋”” ๋ถ€๋ถ„ ํ•ฉ์ณ์„œ 1.1M ์šฉ๋Ÿ‰์˜ ์ด๋ฏธ์ง€ ์‘๋‹ต์„ ๋‹ค์‹œ ๋‚ด๋ฆฝ๋‹ˆ๋‹ค.

 

  • ์บ์‹œ๊ฐ€ ์—†์„ ๋•Œ์˜ ๋‹จ์ 

1. ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•„๋„ ๊ณ„์† ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

2. ์ธํ„ฐ๋„ท ๋„คํŠธ์›Œํฌ๋Š” ๋งค์šฐ ๋Š๋ฆฌ๊ณ  ๋น„์Œ‰๋‹ˆ๋‹ค. (ํ•˜๋“œ๋””์Šคํฌ ๋“ฑ๋“ฑ์— ๋น„ํ•ด..?)

3. ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ ๋ธŒ๋ผ์šฐ์ € ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋Š๋ ค ๋ถˆํŽธํ•ฉ๋‹ˆ๋‹ค.

 

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์บ์‹œ๋ฅผ ์ ์šฉํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐํ•ด๋ณผ๊นŒ๋‚˜~?

 

1-2. ์บ์‹œ ์ ์šฉ

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

์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์„œ๋ฒ„์— star.jpg ์กฐํšŒ๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์„œ๋ฒ„์—์„œ ์บ์‹œ์™€ ๊ด€๋ จ๋œ ๊ฒƒ์„ ์„ธํŒ…ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ฒŒ ์„œ๋ฒ„์—์„œ ์บ์‹œ๋ฅผ ์ ์šฉํ•˜๊ณ  ๋‚˜๋ฉด cache-control์ด๋ž€ http ํ—ค๋”์— ๋ญ”๊ฐ€๋ฅผ ๋„ฃ์–ด์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

=> cache-control: max-age๋ž€ ์บ์‹œ๊ฐ€ ์œ ํšจํ•œ ์‹œ๊ฐ„(์ดˆ)์œผ๋กœ max ์‹œ๊ฐ„์ด 60์ดˆ๋ž€ ๋œป์ด๊ณ , ์‘๋‹ต์„ ๋ณด๋‚ด๊ณ ์„œ 60์ดˆ ๋™์•ˆ์€ ์บ์‹œ๊ฐ€ ์œ ํšจํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋œปํ•ฉ๋‹ˆ๋‹ค.

(์œ ํšจ์‹œ๊ฐ„ 60์ดˆ๋Š” ์ž„์˜๋กœ ์ง€์ •ํ•œ ๊ฒƒ์ด๊ณ , ์‹ค์ œ ์œ ํšจ์‹œ๊ฐ„์€ ๋ณดํ†ต ํ›จ์”ฌ ๋” ๊น๋‹ˆ๋‹ค.)

 

์ตœ์ดˆ๋กœ ์š”์ฒญํ•  ๋•Œ๋Š” star.jpg๊ฐ€ ์ผ๋‹จ ์ „์†ก์ด ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๊ณ  ์›น ๋ธŒ๋ผ์šฐ์ €์˜ ๋‚ด๋ถ€์— ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์ €์žฅ์†Œ์ธ ์บ์‹œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์ €์žฅ์†Œ์— 60์ดˆ ์œ ํšจํ•˜๋‹ค๊ณ  ์ ์–ด๋†“์€ ๋’ค์— ์‘๋‹ต ๊ฒฐ๊ณผ๋ฅผ ์บ์‹œ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

 

  • ๋‘ ๋ฒˆ์งธ ์š”์ฒญ

์•ž์˜ ๊ณผ์ • ํ›„์— ๋‘ ๋ฒˆ์งธ ์š”์ฒญ์„ ํ•ฉ๋‹ˆ๋‹ค.

์บ์‹œ๋ฅผ ๋ณด๋‹ˆ๊นŒ 60์ดˆ ์œ ํšจํ•œ๋‹ค๊ณ  ๋˜์–ด์žˆ๊ณ , ์•„์ง ์ €๋Š” 60์ดˆ ์•ˆ์— ์žˆ๋„ค์š”?

 

๊ทธ๋Ÿฌ๋ฉด ๊ทธ๋ƒฅ ์ด ์บ์‹œ์—์„œ ์กฐํšŒํ•ด์„œ star.jpg๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

๋„คํŠธ์›Œํฌ๋ฅผ ์•„์˜ˆ ํƒˆ ํ•„์š”๊ฐ€ ์—†๊ฒ ์ฃ .

 

  • ์บ์‹œ ์ ์šฉํ–ˆ์„ ๋•Œ์˜ ์žฅ์ 

1. ์บ์‹œ ๋•๋ถ„์— ์บ์‹œ ๊ฐ€๋Šฅ ์‹œ๊ฐ„ ๋™์•ˆ ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

2. 1๋ฒˆ ์žฅ์  ๋•๋ถ„์— ๋น„์‹ผ ๋„คํŠธ์›Œํฌ์˜ ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ ๋ธŒ๋ผ์šฐ์ € ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋งค์šฐ ๋นจ๋ผ ์†์ด ์‹œ์›~ํ•ฉ๋‹ˆ๋‹ค.

 

=>์–ด๋”” ์›น ์‚ฌ์ดํŠธ ๋“ค์–ด๊ฐ€์„œ ๋‚˜๊ฐ”๋‹ค๊ฐ€ ๋‹ค์‹œ ๋“ค์–ด์˜ค๋ฉด ๊ทธ ์‚ฌ์ดํŠธ๊ฐ€ ๊ธˆ๋ฐฉ ์ผœ์ง€๋Š” ์ด์œ ์—์š”!

 

  • ์„ธ ๋ฒˆ์งธ ์š”์ฒญ - ์บ์‹œ ์‹œ๊ฐ„ ์ดˆ๊ณผ

star.jpg๋ฅผ 3๋ฒˆ์งธ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.

๊ทผ๋ฐ, ์ด๋ฒˆ์—๋Š” ์บ์‹œ ์œ ํšจ์‹œ๊ฐ„ 60์ดˆ๊ฐ€ ์ดˆ๊ณผ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

์ด๋Ÿฌ๋ฉด ๋‹น์—ฐํžˆ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์š”์ฒญํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ฒŒ ๋‹ค์‹œ ์š”์ฒญํ–ˆ๋”๋‹ˆ ์„œ๋ฒ„์—์„œ ๋˜ ๋˜‘๊ฐ™์€ ๋ฉ”์‹œ์ง€๋ฅผ ๋‚ด๋ ค์ค๋‹ˆ๋‹ค. (์บ์‹œ๋Š” ๋˜ ๋˜‘๊ฐ™์ด 60์ดˆ ๋™์•ˆ ์œ ํšจ)

 

๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์„œ ์บ์‹œ์— ์žˆ๋˜ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋Š” ์ง€์šฐ๊ณ  ๋‹ค์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฎ์–ด ์”Œ์›๋‹ˆ๋‹ค.

์บ์‹œ๊ฐ€ ์ดˆ๊ธฐํ™” ๋˜๋ฉด์„œ ๋‹ค์‹œ ์œ ํšจ์‹œ๊ฐ„์ด 60์ดˆ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

์ฆ‰, ์บ์‹œ ์œ ํšจ ์‹œ๊ฐ„์ด ์ดˆ๊ณผํ•˜๋ฉด, ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ์กฐํšŒํ•˜๊ณ  ์บ์‹œ๋ฅผ ๊ฐฑ์‹ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋•Œ ๋‹ค์‹œ ๋„คํŠธ์›Œํฌ ๋‹ค์šด๋กœ๋“œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

 

๊ทผ๋ฐ ์†”์งํžˆ ์ด๋ฏธ์ง€๊ฐ€ ์•„์˜ˆ ์‹น ๋‹ค ๋ณ€๊ฒฝ๋œ ๊ฒƒ๋„ ์•„๋‹Œ๋ฐ ๋˜‘๊ฐ™์€ ์ด๋ฏธ์ง€๋ฅผ ์ „์ฒด ๋‹ค ๋‹ค์‹œ ๋‹ค์šด ๋ฐ›๋Š” ๊ฒƒ์€ ์‹œ๊ฐ„๋„ ์ •์„ฑ๋„ ๋„ˆ๋ฌด๋„ˆ๋ฌด ์•„๊น์ง€ ์•Š๋‚˜์š”??

๊ทธ๋ž˜์„œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ‘์—๋ฅผ ํ™•์ธํ•ด๋ณด์‹ค๊นŒ์š”?

๊ณ ๊ณ ~


2. ๊ฒ€์ฆ ํ—ค๋”์™€ ์กฐ๊ฑด๋ถ€ ์š”์ฒญ1

2-1. ์บ์‹œ ์‹œ๊ฐ„ ์ดˆ๊ณผ

์บ์‹œ ์œ ํšจ ์‹œ๊ฐ„์ด ์ดˆ๊ณผํ•ด์„œ ์„œ๋ฒ„์— ๋‹ค์‹œ ์š”์ฒญํ•˜๋ฉด ์„œ๋ฒ„์—์„œ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์ƒํ™ฉ๊ณผ ์„œ๋ฒ„์—์„œ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์€ ์ƒํ™ฉ ์ด๋ ‡๊ฒŒ ๋‘ ๊ฐ€์ง€ ์ƒํ™ฉ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

์ „์ž์˜ ๊ฒฝ์šฐ์—๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋‹ค ๋‹ค์šด๋ฐ›์•„์•ผ ํ•˜์ง€๋งŒ, ํ›„์ž์˜ ๊ฒฝ์šฐ์—๋„ ํฐ ์šฉ๋Ÿ‰์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋‹ค ๋‹ค์šด๋ฐ›์•„์•ผ ํ• ๊นŒ์š”?

์†”์งํžˆ ๋ˆ, ์‹œ๊ฐ„ ๋“ฑ๋“ฑ ๋‹ค ๋‚ญ๋น„์ผ๊ฑฐ์—์š”.

์ด ๋ฌธ์ œ์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ๊ฒ€์ฆ ํ—ค๋”์™€ ์กฐ๊ฑด๋ถ€ ์š”์ฒญ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌ๋ฉด ์•ˆ ๋ผ์š”.

 

2-2. ๊ฒ€์ฆ ํ—ค๋” ์ถ”๊ฐ€ - Last-Modified ํ™œ์šฉ ๋ฐฉ๋ฒ•

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

๊ธฐ์กด์— ์ €์žฅ๋œ ์บ์‹œ ์—†์ด ์ฒ˜์Œ๋ถ€ํ„ฐ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ star.jpg๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.

์š”์ฒญ์„ ๋ฐ›๊ณ  ๋‚˜์„œ ์„œ๋ฒ„์—์„œ ์œ ํšจ์‹œ๊ฐ„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Last-Modified๋ผ๋Š” ๋ฐ์ดํ„ฐ ์ตœ์ข… ์ˆ˜์ •์ผ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ์‘๋‹ต ๊ฒฐ๊ณผ๋ฅผ ์บ์‹œ์— ์ €์žฅํ•˜๊ณ , 60์ดˆ ๋™์•ˆ ์œ ํšจํ•˜๋‹ค๋Š” ๊ฒƒ๋„ ์บ์‹œ์— ์ ์–ด๋†“๊ณ , ๋ฐ์ดํ„ฐ ์ตœ์ข… ์ˆ˜์ •์ผ๋„ ๊ธฐ๋กํ•ด๋†“์Šต๋‹ˆ๋‹ค.

 

  • ๋‘ ๋ฒˆ์งธ ์š”์ฒญ - ์บ์‹œ ์‹œ๊ฐ„ ์ดˆ๊ณผ

๋‘ ๋ฒˆ์งธ ์š”์ฒญ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๋งŒ์•ฝ์— ์œ ํšจ์‹œ๊ฐ„์ด 60์ดˆ๊ฐ€ ์ง€๋‚ฌ์–ด์š”.

 

์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ, if-modified-since๋ผ๋Š” http ์š”์ฒญ ํ—ค๋”๋ฅผ ๋ถ™์ด๊ณ  ์—ฌ๊ธฐ์— ๋‚ ์งœ๋ฅผ ๋ถ™ํž™๋‹ˆ๋‹ค.

(์ด ๋‚ ์งœ๊ฐ€ ๋ฐ์ดํ„ฐ ์ตœ์ข… ์ˆ˜์ •์ผ ์ž…๋‹ˆ๋‹ค.)

 

๊ทธ๋Ÿผ ์„œ๋ฒ„์—์„œ ์š”์ฒญ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.

์„œ๋ฒ„๋Š” ์ž์‹ ์—๊ฒŒ ์žˆ๋Š” star.jpg ์ตœ์ข… ์ˆ˜์ •์ผ์ด ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์š”์ฒญํ•œ star.jpg์˜ ์ตœ์ข… ์ˆ˜์ •์ผ๊ณผ ๊ฐ™์€์ง€ ๊ฒ€์ฆ์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

์„œ๋ฒ„๋Š” ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๋‚ ์งœ๋ฅผ ๋ณด๊ณ  ํŒ๋‹จ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์˜ค? ๋ฐ์ดํ„ฐ ์ตœ์ข… ์ˆ˜์ •์ผ์ด ๊ฐ™๋„ค์š”? ์ด๋Ÿฌ๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์•„์ง ์ˆ˜์ •๋˜์ง€ ์•Š์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋˜๋ฉด ์„œ๋ฒ„์—์„œ ์›น ๋ธŒ๋ผ์šฐ์ €ํ•œํ…Œ star.jpg๋Š” ์•„์ง ์จ๋„ ๋œ๋‹ค๊ณ  ์‘๋‹ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๊ทธ๋ƒฅ ์ง€๊ธˆ ๋ฐ”๋กœ ์‘๋‹ตํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ  ๋’ค์— ๊ณผ์ •์ด ์ข€ ๋” ์žˆ์Šต๋‹ˆ๋‹ค.

 

์„œ๋ฒ„๊ฐ€ ๊ฒ€์ฆํ•ด๋ณด๊ณ  ์ƒˆ๋กœ ์ˆ˜์ •์ด ๋œ ๊ฒƒ์ด ์—†์œผ๋ฉด 304 Not Modified์™€ ํ•จ๊ป˜ cache-control, ์ตœ์ข… ์ˆ˜์ •์ผ ๋“ฑ์„ ์›น ๋ธŒ๋ผ์šฐ์ €ํ•œํ…Œ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๊ฒŒ http body๋Š” ์ „์†กํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์™œ๋ƒํ•˜๋ฉด ์ˆ˜์ •๋œ ๊ฒƒ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์šฉ๋Ÿ‰์ด ํฌ๊ณ  ๋ฌด๊ฑฐ์šด body ๋ถ€๋ถ„์€ ๊ตณ์ด ๋ณด๋‚ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

(ํ—ค๋”: 0.1M, ๋ฐ”๋””: 1.0M, ์ด 1.1M์ธ๋ฐ ํ—ค๋”๋งŒ ๋ณด๋‚ด๋‹ˆ๊นŒ 0.1M ์ „์†ก)

 

๊ทธ๋ž˜์„œ ์„œ๋ฒ„๋Š” body ๋ถ€๋ถ„ ๋นผ๊ณ  ์‹œ์ž‘ ๋ผ์ธ๊ณผ ํ—ค๋” ๋ถ€๋ถ„๋งŒ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. 

์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜๊ฐ€ ํ™• ์ค„๊ฒ ์ฃ .

์›น ๋ธŒ๋ผ์šฐ์ €๋Š” 304๋ฅผ ๋ณด๊ณ  "์•„! ์ตœ๊ทผ์— ์ˆ˜์ •๋œ๊ฒŒ ์—†์–ด์„œ ๊ณ„์† ์จ๋„ ๋˜๋Š”๊ตฌ๋‚˜!"๋ผ๊ณ  ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ฒŒ ์‘๋‹ต ๊ฒฐ๊ณผ ์žฌ์‚ฌ์šฉํ•˜๊ณ  ํ—ค๋” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐฑ์‹ ํ•ฉ๋‹ˆ๋‹ค. (์บ์‹œ๋„ ๋‹ค์‹œ ์„ธํŒ…)

์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๋‹ค์‹œ ์œ ํšจ์‹œ๊ฐ„ 60์ดˆ๊ฐ€ ์œ ํšจํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

์ตœ์ข…์ ์œผ๋กœ ์บ์‹œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

  • ์ •๋ฆฌ

๊ฒฐ๋ก ์ ์œผ๋กœ ๊ฒ€์ฆ ํ—ค๋”์™€ ์กฐ๊ฑด๋ถ€ ์š”์ฒญ์€ ๊ฐ™์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. (Last-Modified + if-modified-since)

 

๊ทธ๋ฆฌ๊ณ , ์บ์‹œ ์œ ํšจ์‹œ๊ฐ„์ด ์ดˆ๊ณผํ•ด๋„ ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐฑ์‹ ๋˜์ง€ ์•Š์œผ๋ฉด...

304 Not Modified + ํ—ค๋” ๋ฉ”ํƒ€ ์ •๋ณด๋งŒ ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค.(Body X)

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

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

 

๋Œ€๋ถ€๋ถ„์˜ ์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด ๋งค์ปค๋‹ˆ์ฆ˜์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค!!

์šฐ์™€์•„!!


3. ๊ฒ€์ฆ ํ—ค๋”์™€ ์กฐ๊ฑด๋ถ€ ์š”์ฒญ2

3-1. ๊ฒ€์ฆ ํ—ค๋”์™€ ์กฐ๊ฑด๋ถ€ ์š”์ฒญ์ด๋ž€..?

  • ๊ฒ€์ฆ ํ—ค๋”
    • ์บ์‹œ ๋ฐ์ดํ„ฐ์™€ ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ™์€์ง€ ๊ฒ€์ฆํ•˜๋Š” ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค.
    • Last-Modified, ETag
  • ์กฐ๊ฑด๋ถ€ ์š”์ฒญ ํ—ค๋”
    • ๊ฒ€์ฆ ํ—ค๋”๋กœ ์กฐ๊ฑด์— ๋”ฐ๋ฅธ ๋ถ„๊ธฐ๋ฅผ ์„œ๋ฒ„์— ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
    • if-Modified-Since: Last-Modified ์‚ฌ์šฉ
    • if-None-Match: ETag ์‚ฌ์šฉ
    • ์กฐ๊ฑด์ด ๋งŒ์กฑํ•˜๋ฉด 200 OK
    • ์กฐ๊ฑด์ด ๋งŒ์กฑํ•˜์ง€ ์•Š์œผ๋ฉด 304 Not Modified

 

3-2. ์˜ˆ์‹œ

Q. if-Modified-Since: ์ดํ›„์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆ˜์ •๋˜์—ˆ์œผ๋ฉด?

  • A. ๋ฐ์ดํ„ฐ ๋ฏธ๋ณ€๊ฒฝ ์˜ˆ์‹œ (์œ„์—์„œ ์„ค๋ช…ํ•œ ์ผ€์ด์Šค)
    • ์บ์‹œ: 2025๋…„ 3์›” 16์ผ 10:00:00 vs ์„œ๋ฒ„: 2025๋…„ 3์›” 16์ผ 10:00:00
    • 304 Not Modified, ํ—ค๋” ๋ฐ์ดํ„ฐ๋งŒ ์ „์†ก (Body ํฌํ•จX)
      => ์งˆ๋ฌธ์ด ์ˆ˜์ •๋˜์—ˆ๋ƒ?์ธ๋ฐ ์ˆ˜์ •์ด ์•ˆ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— 200 OK ์„ฑ๊ณต์ด ์•„๋‹ˆ๋ผ 304์ž…๋‹ˆ๋‹ค.
    • ์ „์†ก ์šฉ๋Ÿ‰ 0.1M (ํ—ค๋” 0.1M)
  • A. ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์˜ˆ์‹œ
    • ์บ์‹œ: 2025๋…„ 3์›” 16์ผ 10:00:00 vs ์„œ๋ฒ„: 2025๋…„ 3์›” 16์ผ 11:00:00 (1์‹œ๊ฐ„ ์ฐจ์ด - ์ˆ˜์ •๋จ)
    • 200 OK, ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์ „์†ก (Body ํฌํ•จ)
      => ์งˆ๋ฌธ์ด ์ˆ˜์ •๋˜์—ˆ๋ƒ?์ธ๋ฐ ์ˆ˜์ •์ด ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— 200 OK ์„ฑ๊ณต์ž…๋‹ˆ๋‹ค.
    • ์ „์†ก ์šฉ๋Ÿ‰ 1.1M (ํ—ค๋” 0.1M, ๋ฐ”๋”” 1.0M)

 

3-3. Last-Modified, If-Modified-Since ๋‹จ์ 

  • ์œ„์—์„œ ์„ค๋ช…ํ•œ ๊ฒ€์ฆ ํ—ค๋”์™€ ์กฐ๊ฑด๋ถ€ ์š”์ฒญ์ž…๋‹ˆ๋‹ค.
  • 1์ดˆ ๋ฏธ๋งŒ(0.x์ดˆ) ๋‹จ์œ„๋กœ ์บ์‹œ ์กฐ์ •์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋‚ ์งœ ๊ธฐ๋ฐ˜์˜ ๋กœ์ง์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•ด์„œ ๋‚ ์งœ๊ฐ€ ๋‹ค๋ฅด์ง€๋งŒ, ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•ด์„œ ๋ฐ์ดํ„ฐ ๊ฒฐ๊ณผ๊ฐ€ ๋˜‘๊ฐ™์€ ๊ฒฝ์šฐ
    => ๋‚ ์งœ๋งŒ ๊ฐฑ์‹ ๋˜๊ณ , ์›๋ณธ๊ณผ ๋˜‘๊ฐ™์€๋ฐ ์ „์ฒด๊ฐ€ ๋‹ค ๋‹ค์šด๋กœ๋“œ ๋ฉ๋‹ˆ๋‹คใ… ใ… 
  • ์„œ๋ฒ„์—์„œ ๋ณ„๋„์˜ ์บ์‹œ ๋กœ์ง์„ ๊ด€๋ฆฌํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ => ETag ์‚ฌ์šฉ
    • ex) ์ŠคํŽ˜์ด์Šค๋‚˜ ์ฃผ์„์ฒ˜๋Ÿผ ํฌ๊ฒŒ ์˜ํ–ฅ์ด ์—†๋Š” ๋ณ€๊ฒฝ์—์„œ ์บ์‹œ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ

 

3-4. ETag, If-None-Match

  • ETag = Entity Tag ์ค„์ž„๋ง
  • ์บ์‹œ์šฉ ๋ฐ์ดํ„ฐ์— ์ž„์˜์˜ ๊ณ ์œ ํ•œ ๋ฒ„์ „ ์ด๋ฆ„์„ ๋‹ฌ์•„๋‘ก๋‹ˆ๋‹ค. (๋‚ ์งœX)
    • ex) ETag: "v1.0", ETag: "a2sdlkjflkwepj3"
  • ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์ด ์ด๋ฆ„์„ ๋ฐ”๊พธ์–ด์„œ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. (Hash๋ฅผ ๋‹ค์‹œ ์ƒ์„ฑ)
    • ex) ETag: "aaaaa" -> ETag: "bbbbb"
  • ์ง„์งœ ๋‹จ์ˆœํ•˜๊ฒŒ ETag๋งŒ ๋ณด๋‚ด์„œ ๊ฐ™์œผ๋ฉด ์œ ์ง€ํ•˜๊ณ , ๋‹ค๋ฅด๋ฉด ๋‹ค์‹œ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์Šต๋‹ˆ๋‹ค!!

 

3-5. ๊ฒ€์ฆ ํ—ค๋” ์ถ”๊ฐ€ - ETag ํ™œ์šฉ ๋ฐฉ๋ฒ•

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

ํด๋ผ์ด์–ธํŠธ๊ฐ€ star.jpg๋ฅผ ์กฐํšŒํ•ด๋‹ฌ๋ผ๊ณ  ์š”์ฒญ์„ ํ•˜๋ฉด ์„œ๋ฒ„๋Š” ์š”์ฒญ์„ ๋ฐ›์•„์„œ ETag๋ฅผ ๋‚ด๋ ค์ค๋‹ˆ๋‹ค.

 

์ด๋ฒˆ์—๋Š” ์บ์‹œ์— 60์ดˆ ์œ ํšจ์™€ ETag๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

 

  • ๋‘ ๋ฒˆ์งธ ์š”์ฒญ - ์บ์‹œ ์‹œ๊ฐ„ ์ดˆ๊ณผ

๊ทธ๋ ‡๊ฒŒ ๋‘ ๋ฒˆ์งธ ์š”์ฒญ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์บ์‹œ ์‹œ๊ฐ„์ด ์ดˆ๊ณผ๋˜์—ˆ๋„ค์š”?

 

์„œ๋ฒ„์— ๊ฐ–๊ณ  ์žˆ๋Š” ETag๊ฐ€ ์žˆ์œผ๋ฉด ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ If-None-Match(๋งค์น˜๊ฐ€ ์•ˆ ๋˜๋ฉด)๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

 

์–ด? ๋งค์น˜๊ฐ€ ๋˜์–ด๋ฒ„๋ ธ๋„ค์š”?

์ด๊ฒƒ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„์ง ์ˆ˜์ •๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์„ ๋œปํ•ฉ๋‹ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ ์ˆ˜์ •์ด ๋˜์ง€ ์•Š์•„ ์‹คํŒจ๋ฉด 304 Not Modified๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ HTTP ํ—ค๋” ์šฉ๋Ÿ‰ 0.1M๋งŒ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. (Body ์ „์†กX)

 

์‘๋‹ต์„ ๋ฐ›์œผ๋ฉด ์‘๋‹ต ๊ฒฐ๊ณผ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๊ณ , ํ—ค๋” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐฑ์‹ ํ•ฉ๋‹ˆ๋‹ค.

(์œ ํšจ์‹œ๊ฐ„ 60์ดˆ๊ฐ€ ์œ ํšจํ•ด์ง)

 

๋งˆ์ง€๋ง‰์œผ๋กœ, ์บ์‹œ์—์„œ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.

 

3-6. ETag, If-None-Match ์ •๋ฆฌ

  • ์ง„์งœ ๋‹จ์ˆœํ•˜๊ฒŒ ETag๋งŒ ์„œ๋ฒ„์— ๋ณด๋‚ด์„œ ๊ฐ™์œผ๋ฉด ์œ ์ง€ํ•˜๊ณ , ๋‹ค๋ฅด๋ฉด ๋‹ค์‹œ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์Šต๋‹ˆ๋‹ค.
  • ์บ์‹œ ์ œ์–ด ๋กœ์ง์„ ์„œ๋ฒ„์—์„œ ์™„์ „ํžˆ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ๋Š” ๋‹จ์ˆœํžˆ ์ด ๊ฐ’์„ ์„œ๋ฒ„์— ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. (ํด๋ผ์ด์–ธํŠธ๋Š” ์บ์‹œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.)
  • ex) ์„œ๋ฒ„๋Š” ๋ฐฐํ„ฐ ์˜คํ”ˆ ๊ธฐ๊ฐ„์ธ 3์ผ ๋™์•ˆ ํŒŒ์ผ์ด ๋ณ€๊ฒฝ๋˜์–ด๋„ ETag๋ฅผ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
    ex) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ ์ฃผ๊ธฐ์— ๋งž์ถ”์–ด ETag๋ฅผ ๋ชจ๋‘ ๊ฐฑ์‹ ํ•ฉ๋‹ˆ๋‹ค. (์š”๊ฑด ๊ฐ€๋Šฅ์„ฑ ์žˆ์Œ)

 


4. ์บ์‹œ์™€ ์กฐ๊ฑด๋ถ€ ์š”์ฒญ ํ—ค๋”

4-1. ์บ์‹œ ์ œ์–ด ํ—ค๋”

  • Cache-Control: ์บ์‹œ ์ œ์–ด
    => ์ง€๊ธˆ์€ ์š”๊ฑฐ ํ•˜๋‚˜๋กœ ๋‹ค ๋ฉ๋‹ˆ๋‹ค.
  • Pragma: ์บ์‹œ ์ œ์–ด(ํ•˜์œ„ ํ˜ธํ™˜)
  • Expires: ์บ์‹œ ์œ ํšจ ๊ธฐ๊ฐ„(ํ•˜์œ„ ํ˜ธํ™˜)

 

4-1(1). Cache-Control (์บ์‹œ ์ง€์‹œ์–ด - directives)

  • Cache-Control: max-age
    • ์บ์‹œ ์œ ํšจ ์‹œ๊ฐ„, ์ดˆ ๋‹จ์œ„, ๋ณดํ†ต ์‹œ๊ฐ„ ๊ธธ๊ฒŒ ์žก์Šต๋‹ˆ๋‹ค.
  • Cache-Control: no-cache
    • ๋ฐ์ดํ„ฐ๋Š” ์บ์‹œํ•ด๋„ ๋˜์ง€๋งŒ, ํ•ญ์ƒ ์‚ฌ์šฉ ์ „์— ์›(origin) ์„œ๋ฒ„์— ๊ฒ€์ฆํ•˜๊ณ  ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. (์กฐ๊ฑด๋ถ€ ์š”์ฒญ)
ํ•ญ์ƒ ์‚ฌ์šฉ ์ „์— ์› ์„œ๋ฒ„์— ๊ฒ€์ฆํ•˜๊ณ  ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ 

์šฐ๋ฆฌ ๋ˆˆ์— ์•ˆ ๋ณด์ด๋Š” ์ค‘๊ฐ„ ์บ์‹œ ์„œ๋ฒ„์—์„œ๋Š” ๋ญ˜ ํ•˜๋ฉด ์•ˆ ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • Cache-Control: no-store
    • ๋ฐ์ดํ„ฐ์— ๋ฏผ๊ฐํ•œ ์ •๋ณด๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์ €์žฅํ•˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
      => ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ์‚ญ์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

4-1(2). Pragma (์บ์‹œ ์ œ์–ด - ํ•˜์œ„ ํ˜ธํ™˜)

  • Pragma: no-cache
  • HTTP 1.0 ํ•˜์œ„ ํ˜ธํ™˜
  • ์ง€๊ธˆ์€ ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (์ผ๋ถ€ ์ƒํ™ฉ ์ œ์™ธ)

 

4-1(3). Expires (์บ์‹œ ๋งŒ๋ฃŒ์ผ ์ง€์ • - ํ•˜์œ„ ํ˜ธํ™˜)

  • expires: Mon, 01 Han 1990 00:00:00 GMT
  • ์บ์‹œ ๋งŒ๋ฃŒ์ผ์„ ์ •ํ™•ํ•œ ๋‚ ์งœ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • HTTP 1.0๋ถ€ํ„ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ง€๊ธˆ์€ ๋” ์œ ์—ฐํ•œ Cache-Control: max-age ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
  • Cache-Control: max-age์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด Expires๋Š” ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.

 

4-2. ๊ฒ€์ฆ ํ—ค๋”์™€ ์กฐ๊ฑด๋ถ€ ์š”์ฒญ ํ—ค๋”

  • ๊ฒ€์ฆ ํ—ค๋” (Validator)
    • ETag: "v1.0", ETag: "dsfawefdsa1"
    • Last-Modified: Thu, 04 Jun 2020 07:19:24 GMT
  • ์กฐ๊ฑด๋ถ€ ์š”์ฒญ ํ—ค๋”
    • If-Match, If-None-Match: ETag ๊ฐ’ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • If-Modified-Since, If-Unmodified-Since: Last-Modified ๊ฐ’ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 


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

5-1. ์› ์„œ๋ฒ„ ์ง์ ‘ ์ ‘๊ทผ

origin ์„œ๋ฒ„

ํ•œ๊ตญ์— ์žˆ๋Š” ํด๋ผ์ด์–ธํŠธ๋“ค์ด ๋ฏธ๊ตญ์— ์žˆ๋Š” ์› ์„œ๋ฒ„๋ฅผ ์ด๋ฏธ์ง€ ๊ฐ™์€ ๋ญ”๊ฐ€๋ฅผ ๋ณด๋‚ด๋ ค๋ฉด ๋ฉ€์–ด์„œ ์˜ค๋ž˜ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

์‹œ๊ฐ„์€ 0.5์ดˆ๋กœ ๊ฐ€์ •ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋งŒ์•ฝ 0.5์ดˆ๋ฉด ์‚ฌ๋žŒ๋“ค์€ ์ด๋ฏธ์ง€ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๋Š” ๋ฐ 1๋ช…๋‹น 0.5์ดˆ์”ฉ ๊ณ„์† ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

(์•ž ์‚ฌ๋žŒ์ด ๋๋‚˜์•ผ ๋‹ค์šด ๋ฐ›์•„์ง€๋Š” ํ˜•์‹)

 

5-2. ํ”„๋ก์‹œ ์บ์‹œ ๋„์ž…

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

๋ฏธ๊ตญ์˜ ์› ์„œ๋ฒ„ ์ž…์žฅ์—์„œ๋Š” ์‚ฌ์šฉ์ž๋“ค์ด ์‘๋‹ต ๋ฐ›๋Š” ๊ฒƒ์ด ๋„ˆ~๋ฌด ๋Š๋ฆฝ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ํ•œ๊ตญ ์–ด๋”˜๊ฐ€์— ํ”„๋ก์‹œ ์บ์‹œ ์„œ๋ฒ„๋ผ๋Š” ์ค‘๊ฐ„ ์„œ๋ฒ„๋ฅผ ๋†“์Šต๋‹ˆ๋‹ค.

์š”์ฒญ์ด ์˜ค๋ฉด ํ”„๋ก์‹œ ์บ์‹œ ์„œ๋ฒ„๋ฅผ ๊ฑฐ์ณ์„œ ๊ฐ€๋„๋ก..!!

 

์ตœ์ดˆ๋กœ ํ”„๋ก์‹œ ์บ์‹œ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์š”์ฒญ, ์‘๋‹ต์„ ํ•˜๋ฉด ๊ธฐ๋ก ์กฐ์ฐจ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ต‰์žฅํžˆ ์†๋„๊ฐ€ ๋Š๋ฆฝ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ, ์ฒซ ๋ฒˆ์งธ ์‚ฌ์šฉ์ž๊ฐ€ ํ•œ ๋ฒˆ ๋‹ค์šด๋กœ๋“œ๋ฅผ ๋ฐ›์•„ ๋†“์œผ๋ฉด ๋‘ ๋ฒˆ์งธ ์‚ฌ์šฉ์ž๋ถ€ํ„ฐ๋Š” ์†๋„๊ฐ€ ๊ต‰์žฅํžˆ ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค.

 

์›น ๋ธŒ๋ผ์šฐ์ €๋Š” public ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ํ”„๋ก์‹œ ์บ์‹œ ์„œ๋ฒ„๋Š” ๊ณต์šฉ ์„œ๋ฒ„์ด๊ธฐ ๋•Œ๋ฌธ์— public ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ํ”„๋ก์‹œ ์บ์‹œ ์„œ๋ฒ„๋กœ ๋กœ๊ทธ์ธ ์ •๋ณด ๊ฐ™์€ ๊ฐœ์ธ ์ •๋ณด๋ฅผ ๋ณด๋‚ด๋ฉด ํฐ์ผ์ด ๋‚˜๊ฒ ์ฃ ..?

 

5-3. Cache-Control (์บ์‹œ ์ง€์‹œ์–ด - ๊ธฐํƒ€)

  • Cache-Control: public
    • ์‘๋‹ต์ด publc ์บ์‹œ์— ์ €์žฅ๋˜์–ด๋„ ๋ฉ๋‹ˆ๋‹ค.
    • ์ค‘๊ฐ„ ํ”„๋ก์‹œ ์บ์‹œ ์„œ๋ฒ„์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. (๊ณต์šฉ ์ด๋ฏธ์ง€ ํŒŒ์ผ ๋“ฑ)
  • Cache-Control: private
    • ์‘๋‹ต์ด ํ•ด๋‹น ์‚ฌ์šฉ์ž๋งŒ์„ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    • private ์บ์‹œ์— ์ €์žฅํ•ด์•ผ ํ•˜๊ณ , ๊ธฐ๋ณธ๊ฐ’์ž…๋‹ˆ๋‹ค.
    • ์ค‘๊ฐ„ ํ”„๋ก์‹œ ์บ์‹œ ์„œ๋ฒ„์— ์ €์žฅ๋˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
      ex) ๋กœ๊ทธ์ธ ์ •๋ณด ๊ฐ™์€ ๊ฒƒ ๊ณต์šฉ์œผ๋กœ ๋‹ค ๋ณด๋ฉด ํฐ์ผ ๋‚˜๊ฒ ์ฃ ..?
  • Cache-Control: s-maxage
    • ํ”„๋ก์‹œ ์บ์‹œ์—๋งŒ ์ ์šฉ๋˜๋Š” max-age์ž…๋‹ˆ๋‹ค.
    • ํฌ๊ฒŒ ์ค‘์š”ํ•˜์ง€ ์•Š๊ณ  ์ด๋Ÿฐ ๊ฒƒ์ด ์žˆ๋‹ค ์ •๋„๋งŒ ์•Œ์•„๋‘๊ธฐ!!
  • Age: 60 (HTTP ํ—ค๋”)
    • origin(์˜ค๋ฆฌ์ง„) ์„œ๋ฒ„์—์„œ ์‘๋‹ต ํ›„ ํ”„๋ก์‹œ ์บ์‹œ ๋‚ด์— ๋จธ๋ฌธ ์‹œ๊ฐ„(์ดˆ)
    • ํฌ๊ฒŒ ์ค‘์š”ํ•˜์ง€ ์•Š๊ณ  ์ด๋Ÿฐ ๊ฒƒ์ด ์žˆ๋‹ค ์ •๋„๋งŒ ์•Œ์•„๋‘๊ธฐ!!


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

6-1. Cache-Control

6-1(1). ํ™•์‹คํ•œ ์บ์‹œ ๋ฌดํšจํ™” ์‘๋‹ตํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ

์บ์‹œ ์•ˆ ์“ด๋‹ค๊ณ  ๋ฌดํšจํ™”๋˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.
  • Cache-Control: no-cache, no-store, must-revalidate
    • ์ด ํŽ˜์ด์ง€๋Š” ์บ์‹œ๊ฐ€ ๋˜๋ฉด ์•ˆ ๋ผ! ํ•˜๋ฉด ์ด๊ฑฐ ๋‹ค ๋„ฃ์–ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • Pragma: no-cache
    • HTTP 1.0 ํ•˜์œ„ ํ˜ธํ™˜
    • ๊ณผ๊ฑฐ ํŽ˜์ด์ง€์—์„œ ์š”์ฒญ์ด ์˜ฌ ์ˆ˜๋„ ์žˆ์œผ๋‹ˆ๊นŒ ์ด ํŽ˜์ด์ง€๋Š” ์บ์‹œ๊ฐ€ ๋˜๋ฉด ์•ˆ ๋ผ! ํ•˜๋ฉด ์ด๊ฑฐ๋„ ๋„ฃ์–ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

6-1(2). ์บ์‹œ ์ง€์‹œ์–ด - ํ™•์‹คํ•œ ์บ์‹œ ๋ฌดํšจํ™”

  • Cache-Control: no-cache
    • ๋ฐ์ดํ„ฐ๋Š” ์บ์‹œํ•ด๋„ ๋˜์ง€๋งŒ, ํ•ญ์ƒ ์› ์„œ๋ฒ„์— ๊ฒ€์ฆํ•˜๊ณ  ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (์ด๋ฆ„ ์ฃผ์˜!)
  • Cache-Control: no-store
    • ๋ฐ์ดํ„ฐ์— ๋ฏผ๊ฐํ•œ ์ •๋ณด๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์ €์žฅํ•˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
      => ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ์‚ญ์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • Cache-Control: must-revalidate
    • ์บ์‹œ ๋งŒ๋ฃŒ ํ›„ ์ตœ์ดˆ ์กฐํšŒ ์‹œ ์› ์„œ๋ฒ„์— ๊ฒ€์ฆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (๋ฐ‘์— ๊ทธ๋ฆผ์—์„œ ์„ค๋ช…ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.)
    • ์› ์„œ๋ฒ„ ์ ‘๊ทผ ์‹คํŒจ ์‹œ ๋ฐ˜๋“œ์‹œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
      • 504(Gateway Timeout)
    • must-revalidate๋Š” ์บ์‹œ ์œ ํšจ ์‹œ๊ฐ„์ด๋ผ๋ฉด ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • Pragma: no-cache
    • HTTP 1.0 ํ•˜์œ„ ํ˜ธํ™˜

 

6-2. no-cache vs must-revalidate

6-2(1). no-cache ๊ธฐ๋ณธ ๋™์ž‘

์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ETag์™€ ํ•จ๊ป˜ no-cache๋ฅผ ํ”„๋ก์‹œ ์บ์‹œ ์„œ๋ฒ„์— ๋ณด๋ƒ…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ํ”„๋ก์‹œ ์บ์‹œ ์„œ๋ฒ„๋Š” "์–ด? ๋‚ด๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋ฉด ์•ˆ ๋  ๊ฒƒ ๊ฐ™์€๋ฐ"ํ•˜๊ณ  ํŒ๋‹จํ•˜์—ฌ ์› ์„œ๋ฒ„๋กœ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

๊ทธ ํ›„์— ์› ์„œ๋ฒ„๋Š” ๊ฒ€์ฆํ•ด๋ณด๊ณ  ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค.

 

๊ทผ๋ฐ ํ”„๋ก์‹œ ์บ์‹œ ์„œ๋ฒ„๊ฐ€ no-cache๋ผ๋Š” ๊ฒƒ์„ ์› ์„œ๋ฒ„์— ๋ณด๋‚ด์•ผ ํ•˜๋Š”๋ฐ ์ˆœ๊ฐ„์ ์ธ ๋„คํŠธ์›Œํฌ ๋‹จ์ ˆ๋กœ ์› ์„œ๋ฒ„์— ์ ‘๊ทผ์ด ์•ˆ ๋œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”?

ํ”„๋ก์‹œ ์บ์‹œ ์„œ๋ฒ„์—๋Š” ์˜ค๋ฅ˜๋ฅผ ๋„์šฐ๊ธฐ ๋ณด๋‹ค ์˜›๋‚  ๋ฐ์ดํ„ฐ๋ผ๋„ ๋ณด์—ฌ์ค˜์•ผ ๋œ๋‹ค๋Š” ์„ค์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ 200 OK๋กœ ์‘๋‹ตํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ทผ๋ฐ ์ด๊ฒŒ ๊ณต์šฉ ์ด๋ฏธ์ง€ ํŒŒ์ผ ๊ฐ™์€ ๊ฒƒ์ด๋ฉด ๊ดœ์ฐฎ์€๋ฐ ๋งŒ์•ฝ ๋กœ๊ทธ์ธ ์ •๋ณด ๊ฐ™์€ ๊ฐœ์ธ์ ์ธ ์ •๋ณด๋ผ๋ฉด ๋ณด์—ฌ์ง€๋ฉด ์•ˆ ๋˜๊ฒ ์ฃ ..?

๊ทธ๋ž˜์„œ ์ด๊ฑธ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด must-revalidate ์ž…๋‹ˆ๋‹ค.

 

6-2(2). must-revalidate

์œ„์—์ฒ˜๋Ÿผ ๋˜‘๊ฐ™์€ ์ƒํ™ฉ์— must-revalidate์ด๋ฉด ํ”„๋ก์‹œ ์บ์‹œ ์„œ๋ฒ„๊ฐ€ ๋ฌด์กฐ๊ฑด 504 ์˜ค๋ฅ˜๋ฅผ ์›น ๋ธŒ๋ผ์šฐ์ €์— ๋ณด๋‚ด๋ฒ„๋ฆฝ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์•ˆ ๋ณด์ด๊ฒ ์ฃ .

 

๋”ฐ๋ผ์„œ, ํ™•์‹คํ•œ ์บ์‹œ ๋ฌดํšจํ™”๋ฅผ ํ•˜๋ ค๋ฉด must-revalidate๊นŒ์ง€ ๋„ฃ์–ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค!!


์ด๋กœ์จ HTTP ๋ชจ๋“  ๊ฐ•์˜ ์ •๋ฆฌ๊ฐ€ ๋์ด ๋‚ฌ์Šต๋‹ˆ๋‹ค~!

๋‹ค์Œ์—” Spring ๊ธฐ๋ณธ ๊ฐ•์˜ ์ •๋ฆฌ ๋“ค๊ณ  ์˜ฌ๊ฒŒ์šฅ

๊ทธ๋•Œ๊นŒ์ง€ ์•ˆ๋‡ฝ~~