WEB

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

Sue 2022. 3. 14. 19:29

๐Ÿ“Œ ์บ์‹œ ๊ธฐ๋ณธ ๋™์ž‘

โœ… ์บ์‹œ๊ฐ€ ์—†๋‹ค๋ฉด?

  • ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•„๋„ ๋งค๋ฒˆ ์ƒˆ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„์•ผ ํ•œ๋‹ค
  • ์ธํ„ฐ๋„ท ๋„คํŠธ์›Œํฌ๋Š” ๋งค์šฐ ๋А๋ฆฌ๊ณ  ๋น„์Œˆ > ๋ธŒ๋ผ์šฐ์ € ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋А๋ฆผ > ๋А๋ฆฐ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜

 

โœ… ์บ์‹œ ์ ์šฉ ํ›„

1๏ธโƒฃ ์ฒซ๋ฒˆ์งธ ์š”์ฒญ

  • ์„œ๋ฒ„๋Š” ์‘๋‹ต ๋ฉ”์„ธ์ง€ ํ—ค๋”์˜ cache-control์—์„œ ์บ์‹œ์˜ ์œ ํšจํ•œ ์‹œ๊ฐ„์„ ์ง€์ •ํ•ด์„œ ์‘๋‹ต ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋‚ธ๋‹ค.
  • ์ด ๋•Œ ์‘๋‹ต ๊ฒฐ๊ณผ๋Š” ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ์— ์ €์žฅ๋œ๋‹ค.

 

 2๏ธโƒฃ ๋‘๋ฒˆ์งธ ์š”์ฒญ

 

  • ํด๋ผ์ด์–ธํŠธ์—์„œ ์ด์ „์— ์‚ฌ์šฉํ–ˆ๋˜ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์š”์ฒญ ๋ฉ”์„ธ์ง€๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋จผ์ € ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ์—์„œ ์บ์‹œ ์œ ํšจ ์‹œ๊ฐ„์„ ๊ฒ€์ฆํ•œ๋‹ค.
  • ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ์— ์œ ํšจํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์œผ๋ฉด ์„œ๋ฒ„์— ์š”์ฒญ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ผ ํ•„์š” ์—†์ด ๋ฐ”๋กœ ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ์กฐํšŒํ•œ๋‹ค.
  • ์บ์‹œ ์‹œ๊ฐ„์ด ์ดˆ๊ณผ๋˜๋ฉด ์„œ๋ฒ„์— ์žฌ์š”์ฒญํ•˜๊ณ  ์บ์‹œ๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค. (๋„คํŠธ์›Œํฌ ๋‹ค์šด๋กœ๋“œ ๋ฐœ์ƒ)

 

โœ… ์บ์‹œ ์ ์šฉ ์žฅ์ 

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

 

๐Ÿ“Œ ๊ฒ€์ฆ ํ—ค๋”์™€ ์กฐ๊ฑด๋ถ€ ์š”์ฒญ

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

โ†’ ์บ์‹œ ๋งŒ๋ฃŒ ํ›„์—๋„ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ์ „์†กํ•˜์ง€ ์•Š๊ณ  ์บ์‹œ๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค! ํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ์˜ ๋ณ€๊ฒฝ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• ํ•„์š”

 

โœ… ๊ฒ€์ฆ ํ—ค๋” ์‚ฌ์šฉ

1๏ธโƒฃ ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ ์ „์†ก ์‹œ ๊ฒ€์ฆ ํ—ค๋” ์ถ”๊ฐ€

  • ์„œ๋ฒ„์—์„œ ์ฒ˜์Œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ ๊ฒ€์ฆ ํ—ค๋”๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฉ”์„ธ์ง€ ๋ฐ”๋””์™€ ํ•จ๊ป˜ ์ตœ์ข…์ ์œผ๋กœ ์ˆ˜์ •๋œ ๋‚ ์งœ๋ฅผ ํ•จ๊ป˜ ๋ณด๋‚ธ๋‹ค. (Last-Modified)
  • ์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ์— ์‘๋‹ต ๊ฒฐ๊ณผ์™€ ํ•จ๊ป˜ ์ตœ์ข… ์ˆ˜์ •์ผ์„ ์ €์žฅํ•œ๋‹ค.

 

2๏ธโƒฃ ์œ ํšจ ์‹œ๊ฐ„์ด ๋งŒ๋ฃŒ๋œ ์บ์‹œ์™€ ์„œ๋ฒ„ ๋ฐ์ดํ„ฐ์˜ ์ตœ์ข… ์ˆ˜์ •์ผ ๋น„๊ต

  • ์บ์‹œ์˜ ์œ ํšจ ์‹œ๊ฐ„์ด ๋งŒ๋ฃŒ๋˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” ์บ์‹œ์˜ ์ตœ์ข… ์ˆ˜์ •์ผ ์ •๋ณด์™€ ํ•จ๊ป˜ ์š”์ฒญ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ธ๋‹ค. (if-modified-since)
  • ์„œ๋ฒ„๋Š” ์ „๋‹ฌ๋ฐ›์€ ์ตœ์ข… ์ˆ˜์ •์ผ ์ •๋ณด์™€ ์„œ๋ฒ„์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์˜ ์ตœ์ข… ์ˆ˜์ •์ผ์„ ๋น„๊ตํ•œ๋‹ค.

 

3๏ธโƒฃ ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆ˜์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์„œ๋ฒ„๋Š” ์‘๋‹ต ๋ฉ”์„ธ์ง€์— ํ—ค๋”๋งŒ ํฌํ•จํ•ด์„œ ๋ณด๋‚ธ๋‹ค.

 

  • ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆ˜์ •๋˜์ง€ ์•Š์•˜์Œ์„ ํ™•์ธํ•œ ์„œ๋ฒ„๋Š” 304 Not Modified ์ƒํƒœ์ฝ”๋“œ์™€ ํ•จ๊ป˜ ์‘๋‹ต ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ธ๋‹ค.
  • ์ด๋•Œ HTTP Body๊ฐ€ ์—†๊ณ  ํ—ค๋” ์ •๋ณด๋งŒ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์šฉ๋Ÿ‰์ด ์ ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์˜ ์‘๋‹ต ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐ›๊ณ  ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ์— ์ €์žฅ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋ฉฐ ํ—ค๋” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค. (๋‹ค์‹œ 60์ดˆ ์œ ํšจ)

 

 

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

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

 

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

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

 

โœ… Last-Modified, If-Modified-Since ๋‹จ์ 

  • 1์ดˆ ๋ฏธ๋งŒ ๋‹จ์œ„๋กœ ์บ์‹œ ์กฐ์ • ๋ถˆ๊ฐ€
  • ๋‚ ์งœ ๊ธฐ๋ฐ˜์˜ ์ •ํ•ด์ง„ ๋กœ์ง ์‚ฌ์šฉ
  • ๋‚ ์งœ๊ฐ€ ๋‹ค๋ฅด์ง€๋งŒ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•ด์„œ ๋ฐ์ดํ„ฐ ๊ฒฐ๊ณผ๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ ์‚ฌ์šฉ ๋ถˆ๊ฐ€
  • ์„œ๋ฒ„์—์„œ ๋ณ„๋„์˜ ์บ์‹œ ๋กœ์ง์„ ๊ด€๋ฆฌํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ ์‚ฌ์šฉ ๋ถˆ๊ฐ€ e.g. ์ŠคํŽ˜์ด์Šค๋‚˜ ์ฃผ์„์ฒ˜๋Ÿผ ํฌ๊ฒŒ ์˜ํ–ฅ ์—†๋Š” ๋ณ€๊ฒฝ์—์„œ ์บ์‹œ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ

 

โœ… ETag, If-None-Match ํ—ค๋” ์‚ฌ์šฉ

๐Ÿ”ป ETag (Entity Tag)

  • ์บ์‹œ์šฉ ๋ฐ์ดํ„ฐ์— ์ž„์˜์˜ ๊ณ ์œ ํ•œ ๋ฒ„์ „ ์ด๋ฆ„์„ ๋‹ฌ์•„๋‘ 
  • ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์„œ๋ฒ„๊ฐ€ ์ด๋ฆ„์„ ๋ฐ”๊ฟ”์„œ ์ƒ์„ฑ (Hash ๋‹ค์‹œ ์ƒ์„ฑ)
  • ์ปจํ…์ธ ๊ฐ€ ๊ฐ™์œผ๋ฉด ํ•ด์‹œ๊ฐ’์€ ๋˜‘๊ฐ™์ด ๋‚˜์˜ด
  • ETag๋งŒ ๋ณด๋‚ด์„œ ๊ฐ™์œผ๋ฉด ์œ ์ง€, ๋‹ค๋ฅด๋ฉด ๋‹ค์‹œ ๋ฐ›๊ธฐ > ๊ฒ€์ฆ ํ—ค๋” (If-None-Match)
  • ์บ์‹œ ์ œ์–ด ๋กœ์ง์„ ์„œ๋ฒ„์—์„œ ์™„์ „ํžˆ ๊ด€๋ฆฌ
  • ํด๋ผ์ด์–ธํŠธ๋Š” ๋‹จ์ˆœํ•˜๊ฒŒ ์ด ๊ฐ’์„ ์„œ๋ฒ„์— ์ œ๊ณต(ํด๋ผ์ด์–ธํŠธ๋Š” ์บ์‹œ ๋งค์ปค๋‹ˆ์ฆ˜ ๋ชจ๋ฆ„)
  • e.g. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ ์ฃผ๊ธฐ์— ๋งž์ถ”์–ด ETag ๋ชจ๋‘ ๊ฐฑ์‹ 

 

๐Ÿ“Œ ์บ์‹œ์™€ ์กฐ๊ฑด๋ถ€ ์š”์ฒญ ํ—ค๋” ์ •๋ฆฌ

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

Cache-Control : ์บ์‹œ ์ œ์–ด > ๊ฐ€์žฅ ์ค‘์š”

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

Expires : ์บ์‹œ ์œ ํšจ ๊ธฐ๊ฐ„ (ํ•˜์œ„ ํ˜ธํ™˜)

 

โœ… Cache-Control

๐Ÿ”ป Cache-Control: max-age

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

 

๐Ÿ”ป Cache-Control: no-cache

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

 

๐Ÿ”ป Cache-Control: no-store

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

 

๐Ÿ”ป Cache-Control: must-revalidate

์บ์‹œ ๋งŒ๋ฃŒํ›„ ์žฌ์กฐํšŒ์‹œ ์› ์„œ๋ฒ„์— ๊ฒ€์ฆํ•ด์•ผ ํ•จ

์› ์„œ๋ฒ„ ์ ‘๊ทผ ์‹คํŒจ์‹œ ๋ฐ˜๋“œ์‹œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ด์•ผ ํ•จ -> 504(Gateway Timeout)

์บ์‹œ ์œ ํšจ์‹œ๊ฐ„ ์ด๋ผ๋ฉด ์บ์‹œ๋ฅผ ์‚ฌ์šฉ

 

๐Ÿ“Œ ํ”„๋ก์‹œ ์บ์‹œ

  • origin ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์— ํ”„๋ก์‹œ ์บ์‹œ ์„œ๋ฒ„๋ฅผ ๋‘์–ด ๋” ๋น ๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ ์ „์†ก์ด ๊ฐ€๋Šฅ
  • ํ•œ๋ฒˆ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„๋†“์œผ๋ฉด ๋‹ค์Œ ๋กœ๋”ฉ๋ถ€ํ„ฐ๋Š” ๋น ๋ฅด๊ฒŒ ์ด๋ฃจ์–ด์ง
  • ์ค‘๊ฐ„์—์„œ ๊ณต์šฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์บ์‹œ -> public ์บ์‹œ (Cache-Control: public)
  • ๊ฐœ์ธ ๋กœ์ปฌ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์บ์‹œ -> private ์บ์‹œ (Cache-Control: private)

 

๐Ÿ“Œ ์บ์‹œ ๋ฌดํšจํ™”

์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ž„์˜๋กœ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ ˆ๋Œ€ ์บ์‹œํ•ด์„œ๋Š” ์•ˆ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ ๋ฌดํšจํ™” ์บ์‹œ ์ง€์‹œ์–ด๋ฅผ ์ง€์ • ํ•œ๋‹ค.

 

  • Cache-Control : no-cache, no-store, must-revalidate
  • Pragma : no-cache (HTTP 1.0 ํ•˜์œ„ ํ˜ธํ™˜) -> ๊ณผ๊ฑฐ ๋ฒ„์ „๊นŒ์ง€ ์ง€์›

โ†’ ๋‹ค ๋„ฃ์–ด์ฃผ๋ฉด ์บ์‹œ๋ฅผ ์ ˆ๋Œ€ ์ €์žฅํ•˜์ง€ ์•Š์Œ (ํ™•์‹คํ•œ ์บ์‹œ ๋ฌดํšจํ™” ์‘๋‹ต)

 

โœ… no-cache vs must-revalidate

  • no-cache : ์›์„œ๋ฒ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์บ์‹œ ์„œ๋ฒ„ ์„ค์ •์— ๋”ฐ๋ผ ์บ์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Œ (์˜ค๋ฅ˜๋ณด๋‹ค๋Š” ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ)

 

  • must-validate : ์›์„œ๋ฒ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ํ•ญ์ƒ ์˜ค๋ฅ˜ ๋ฐœ์ƒ (504 Gateway Timeout)
 

 

 

๋Œ“๊ธ€์ˆ˜0