์–ธ์ œ ์‚ฌ์šฉํ• ๊นŒ?

  • Conditional GET์„ ์ด์šฉํ•˜์—ฌ ํŠธ๋ž˜ํ”ฝ์€ ์ค„์ผ ์ˆ˜ ์žˆ์œผ๋‚˜, Round Trip์€ ์ค„์ผ ์ˆ˜ ์—†๋‹ค.
    • Round Trip
      • ํŒจํ‚ท์ด ๋ณด๋‚ด์ง€๊ณ  ์‘๋‹ต์„ ๋ฐ›์„ ๋•Œ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„
  • ์ฆ‰, ๋ฆฌ์†Œ์Šค์˜ ๋ณ€๊ฒฝ ์‚ฌ์‹ค์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋ผ๋ฉด ์› ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค.
  • ์› ์„œ๋ฒ„๊ฐ€ ๋ฉ€๋ฆฌ ์žˆ๋‹ค๋ฉด ์ด ์ง€์—ฐ์ด ์ˆ˜๋ฐฑ ms์ผ ์ˆ˜ ์žˆ๋‹ค.
  • ์ด ์ง€์—ฐ๊นŒ์ง€ ์ค„์ด๊ณ  ์‹ถ์–ด ํƒ„์ƒํ•˜๊ฒŒ ๋œ ๊ฐœ๋…

์šฉ์–ด

  • Fresh (์‹ ์„ ํ•œ): freshness_lifetime > current_age
  • Stale (์ƒํ•œ): freshness_lifetime โ‡ current_age

๋ธŒ๋ผ์šฐ์ € ์บ์‹œ

  • ์บ์‹œ๋œ ์‘๋‹ต์ด ์•„์ง freshํ•œ ๊ฒฝ์šฐ
    • ๋ธŒ๋ผ์šฐ์ € ๋‚ด์— ์ €์žฅ๋œ ๊ฐ’ ๋ฐ˜ํ™˜ (Read from disk)
  • ์บ์‹œ๋œ ์‘๋‹ต์ด staleํ•œ ๊ฒฝ์šฐ
    • ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋ƒ„ (Validation)
      • ๋ฆฌ์†Œ์Šค ๋ณ€๊ฒฝ์ด ์—†๋Š” ๊ฒฝ์šฐ
        • 304 Not Modified
        • body ์—†์Œ
      • ๋ฆฌ์†Œ์Šค ๋ณ€๊ฒฝ์ด ์žˆ๋Š” ๊ฒฝ์šฐ
        • 200 ok
        • body ์žˆ์Œ

Cache-control

  • ์˜ˆ์ „์— Pragma๋กœ ์‚ฌ์šฉ
  • HTTP 1.1 Spec
  • ํ•ด๋‹น ์บ์‹œ ๋™์ž‘์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์„œ๋ฒ„์—์„œ ํ•ด๋‹น ํ—ค๋”๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ๋œ๋‹ค.
  • Expire์˜ ๊ฒฝ์šฐ ์ ˆ๋Œ€ ์‹œ๊ฐ„ ํ‘œํ˜„์ด๋‚˜ ํ•ด๋‹น ํ—ค๋”๋Š” ์ƒ๋Œ€์‹œ๊ฐ„ ํ‘œํ˜„ ๊ฐ€๋Šฅ