๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์›น ์„œ๋น„์Šค

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

by alswlfl 2022. 12. 19.

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

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

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

์บ์‹œ ์ ์šฉ

<๋ฐฉ๋ฒ•>

1. ์ฒซ ๋ฒˆ์งธ ์š”์ฒญ ์‹œ, ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์š”์ฒญํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„๊ฐ€ ์‘๋‹ต์„ ํ•ด์ค„ ๋•Œ, cache-control(์บ์‹œ ์œ ํšจ ์‹œ๊ฐ„)์„ ๊ฐ™์ด ๋ณด๋ƒ„

2. ์„œ๋ฒ„๋กœ ๋ถ€ํ„ฐ ์˜จ ์‘๋‹ต๊ฒฐ๊ณผ๋ฅผ ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ์— ์บ์‹œ ์œ ํšจ ์‹œ๊ฐ„๋™์•ˆ ์ €์žฅํ•ด ๋†“์Œ

3. ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญ ํ•  ๋•Œ, ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ์— ์žˆ๋Š” ์š”์ฒญ์ •๋ณด์ด๋ฉด ์บ์‹œ ์œ ํšจ ์‹œ๊ฐ„์„ ๊ฒ€์ฆ ํ•œ ํ›„ ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ์—์„œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ด

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

<์บ์‹œ ์‹œ๊ฐ„์ด ์ดˆ๊ณผ๋œ ๊ฒฝ์šฐ>

1. ์บ์‹œ ์œ ํšจ ์‹œ๊ฐ„์ด ์ดˆ๊ณผ๊ฐ€ ๋œ๋‹ค๋ฉด, ๋‹ค์‹œ ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญ

2. ์„œ๋ฒ„๋กœ ๋ถ€ํ„ฐ ์˜จ ์‘๋‹ต ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ์— ๋‹ค์‹œ ์ €์žฅ(๊ธฐ์กด์— ์žˆ๋˜ ๋ฐ์ดํ„ฐ๋Š” ๋ฎ์–ด์”Œ์–ด์ง) ํ›„ ์บ์‹œ ์œ ํšจ ์‹œ๊ฐ„ ์ž‘๋™

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

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

์บ์‹œ ์‹œ๊ฐ„ ์ดˆ๊ณผ

  • ์บ์‹œ ์œ ํšจ ์‹œ๊ฐ„์ด ์ดˆ๊ณผํ•ด์„œ ์„œ๋ฒ„์— ๋‹ค์‹œ ์š”์ฒญํ•˜๋ฉด ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ์ƒํ™ฉ์ด ๋ฐœ์ƒ
    1. ์„œ๋ฒ„์—์„œ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝ
    2. ์„œ๋ฒ„์—์„œ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Œ
  • ์บ์‹œ ๋งŒ๋ฃŒ ํ›„์—๋„ ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Œ
  • ์ƒ๊ฐํ•ด๋ณด๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ๋Œ€์‹ ์— ์ €์žฅํ•ด ๋‘์—ˆ๋˜ ์บ์‹œ๋ฅผ ์žฌ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹จ, ํด๋ผ์ด์–ธํŠธ์˜ ๋ฐ์ดํ„ฐ์™€ ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ™๋‹ค๋Š” ์‚ฌ์‹ค์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• ํ•„์š” → ๊ฒ€์ฆ ํ—ค๋”

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

1. ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์š”์ฒญํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„๊ฐ€ ์‘๋‹ต์„ ๋ณด๋‚ด์ค„ ๋•Œ, ์บ์‹œ ์œ ํšจ ์‹œ๊ฐ„๊ณผ, ๋งˆ์ง€๋ง‰ ์ˆ˜์ • ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ๊ฐ™์ด ๋ณด๋ƒ„ (๊ฒ€์ฆ ํ—ค๋”)

2. ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ์— ์‘๋‹ต ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•จ, ์ด๋•Œ ์‘๋‹ต๊ฐ’์— ํฌํ•จ๋˜์–ด ์žˆ๋˜ ๋ฐ์ดํ„ฐ ์ตœ์ข… ์ˆ˜์ •์ผ๋„ ๊ฐ™์ด ์ €์žฅ

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

4. ์š”์ฒญ ๋ฐ›์€ ์„œ๋ฒ„๋Š” ์„œ๋ฒ„๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ตœ์ข… ์ˆ˜์ •์ผ๊ณผ ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ณด๋‚ธ ๋ฐ์ดํ„ฐ ์ตœ์ข… ์ˆ˜์ •์ผ์„ ๋น„๊ต (์กฐ๊ฑด๋ถ€ ์š”์ฒญ)

5. ์ˆ˜์ •์ด ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด(์ผ์น˜ํ•˜๋‹ค๋ฉด), HTTP์‘๋‹ต์„ ๋งŒ๋“ค ๋•Œ 304 Not Modified๋ฅผ ๋ณด๋ƒ„ ์ด๋•Œ! ์‘๋‹ต์— HTTP Body๊ฐ€ ์—†์Œ(์ˆ˜์ •๋œ ๊ฒƒ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์—) → ํ—ค๋” ๋ถ€๋ถ„๋งŒ ์ „์†ก

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

  • ์บ์‹œ ์œ ํšจ ์‹œ๊ฐ„์ด ์ดˆ๊ณผํ•ด๋„, ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐฑ์‹ ๋˜์ง€ ์•Š์œผ๋ฉด
  • 304 Not Modified + ํ—ค๋” ๋ฉ”ํƒ€ ์ •๋ณด๋งŒ ์‘๋‹ต(๋ฐ”๋””X)
  • ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๊ฐ€ ๋ณด๋‚ธ ์‘๋‹ต ํ—ค๋” ์ •๋ณด๋กœ ์บ์‹œ์˜ ๋ฉ”ํƒ€ ์ •๋ณด๋ฅผ ๊ฐฑ์‹ 
  • ํด๋ผ์ด์–ธํŠธ๋Š” ์บ์‹œ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์žฌํ™œ์šฉ
  • ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋„คํŠธ์›Œํฌ ๋‹ค์šด๋กœ๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€๋งŒ ์šฉ๋Ÿ‰์ด ์ ์€ ํ—ค๋” ์ •๋ณด๋งŒ ๋‹ค์šด๋กœ๋“œ
  • ๋งค์šฐ ์‹ค์šฉ์ ์ธ ํ•ด๊ฒฐ์ฑ…

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

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

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

  • ๋ฐ์ดํ„ฐ ๋ฏธ๋ณ€๊ฒฝ ์˜ˆ์‹œ
    • ์บ์‹œ: 2020๋…„ 11์›” 10์ผ 10:00:00 vs ์„œ๋ฒ„: 2020๋…„ 11์›” 10์ผ 10:00:00
    • 304 Not Modified, ํ—ค๋” ๋ฐ์ดํ„ฐ๋งŒ ์ „์†ก(BODY ๋ฏธํฌํ•จ)
    • ์ „์†ก ์šฉ๋Ÿ‰ 0.1M (ํ—ค๋” 0.1M, ๋ฐ”๋”” 1.0M)
  • ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์˜ˆ์‹œ
    • ์บ์‹œ: 2020๋…„ 11์›” 10์ผ 10:00:00 vs ์„œ๋ฒ„: 2020๋…„ 11์›” 10์ผ 11:00:00
    • 200 OK, ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์ „์†ก(BODY ํฌํ•จ)
    • ์ „์†ก ์šฉ๋Ÿ‰ 1.1M (ํ—ค๋” 0.1M, ๋ฐ”๋”” 1.0M)

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

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

ETag, If-None-Match

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

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

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

  • Cache-Control: ์บ์‹œ ์ œ์–ด, ์บ์‹œ ์ง€์‹œ์–ด
    • Cache-Control: max-age
      • ์บ์‹œ ์œ ํšจ ์‹œ๊ฐ„, ์ดˆ ๋‹จ์œ„
    • Cache-Control: no-cache
      • ๋ฐ์ดํ„ฐ๋Š” ์บ์‹œํ•ด๋„ ๋˜์ง€๋งŒ, ํ•ญ์ƒ origin์„œ๋ฒ„์— ๊ฒ€์ฆํ•˜๊ณ  ์‚ฌ์šฉ
    • Cache-Control: no-store
      • ๋ฐ์ดํ„ฐ์— ๋ฏผ๊ฐํ•œ ์ •๋ณด๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์ €์žฅํ•˜๋ฉด ์•ˆ๋จ(๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ์‚ญ์ œ)
  • Pragma: ์บ์‹œ ์ œ์–ด(ํ•˜์œ„ ํ˜ธํ™˜)
    • Pragma: no-cache
    • HTTP 1.0 ํ•˜์œ„ ํ˜ธํ™˜
  • Expries: ์บ์‹œ ์œ ํšจ ๊ธฐ๊ฐ„(ํ•˜์œ„ ํ˜ธํ™˜)
    • expires: Mon, 01 Jan 1990 00:00:00 GMT
    • ์บ์‹œ ๋งŒ๋ฃŒ์ผ์„ ์ •ํ™•ํ•œ ๋‚ ์งœ๋กœ ์ง€์ •
    • HTTP 1.0๋ถ€ํ„ฐ ์‚ฌ์šฉ
    • ์ง€๊ธˆ์€ ๋” ์œ ์—ฐํ•œ Cache-Cotrol: max-age ๊ถŒ์žฅ
    • Cache-Contro: max-age์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด Expires๋Š” ๋ฌด์‹œ

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

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

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

: CDN์„œ๋น„์Šค, ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ์› ์„œ๋ฒ„ ์‚ฌ์ด์— ํ”„๋ก์‹œ ์บ์‹œ ์„œ๋ฒ„๋ฅผ ์ค‘๊ฐ„์— ๋‘๊ณ  ์›น๋ธŒ๋ผ์šฐ์ €(ํ”„๋ผ์ด๋น— ์บ์‹œ)๊ฐ€ ํ”„๋ก์‹œ ์บ์‹œ ์„œ๋ฒ„(ํผ๋ธ”๋ฆญ ์บ์‹œ)์— ์ ‘๊ทผ ํ•œ ํ›„, ํ”„๋ก์‹œ ์บ์‹œ ์„œ๋ฒ„์—์„œ ์› ์„œ๋ฒ„์— ์ ‘๊ทผ

  • public ์บ์‹œ: ์ค‘๊ฐ„์— ๊ณต์šฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์บ์‹œ
  • private ์บ์‹œ: ์›น ๋ธŒ๋ผ์šฐ์ €๋‚˜ ๋กœ์ปฌ์— ์ €์žฅ๋˜๋Š” ์บ์‹œ

Cache-Control

์บ์‹œ ์ง€์‹œ์–ด(directives) - ๊ธฐํƒ€

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

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

Cache-Control: ํ™•์‹คํ•œ ์บ์‹œ ๋ฌดํšจํ™” ์‘๋‹ต

  • Cache-Control: no-cache, no-store, must-revalidate
  • Pragma: no-cache
    • HTTP 1.0 ํ•˜์œ„ ํ˜ธํ™˜

์บ์‹œ ์ง€์‹œ์–ด(directives): ํ™•์‹คํ•œ ์บ์‹œ ๋ฌดํšจํ™”

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

no-cache vs must-revalidate

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

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