πŸ“‚ WEB

μΊμ‹œ(Cache) - 검증 헀더와 쑰건뢀 μš”μ²­ 헀더

Amenable 2023. 3. 29. 22:16

  μ΄μ „ 글을 톡해 μΊμ‹œμ˜ κΈ°λ³Έ κ°œλ…μ„ μ‚΄νŽ΄λ³΄μ•˜λ‹€. 응닡을 받을 λ•Œ 'μΊμ‹œκ°€ μœ νš¨ν•œ μ‹œκ°„ κ°’'을 λ°›μ•˜λŠ”λ° λ§Œμ•½ μΊμ‹œ 유효 μ‹œκ°„μ΄ μ΄ˆκ³Όν•œ κ²½μš°μ—λŠ” μ–΄λ–»κ²Œ λ™μž‘μ„ ν•΄μ•Ό ν• κΉŒ? 

  더 λ‚˜μ•„κ°€μ„œ μ„œλ²„μ— λ‹€μ‹œ μš”μ²­μ„ ν–ˆμ§€λ§Œ 데이터가 λ°”λ€Œμ§€ μ•Šμ•„μ„œ 'μΊμ‹œμ— μžˆλŠ” 유효 μ‹œκ°„μ΄ μ§€λ‚œ 데이터'와 같은 데이터라면 ꡳ이 또 λ‹€μš΄μ„ 받아와야 ν• κΉŒ?

  μ΄λŸ¬ν•œ 점을 '검증 해더'와 '쑰건뢀 μš”μ²­ 헀더'λΌλŠ” 것을 톡해 λ™μž‘ 방식을 이해해 보자.

 

1. 검증 헀더와 쑰건뢀 μš”μ²­ 헀더 🐳

1. 검증 헀더

  • μΊμ‹œ λ°μ΄ν„°μ™€ μ„œλ²„ λ°μ΄ν„°κ°€ κ°™μ€μ§€ κ²€μ¦ν•˜λŠ” λ°μ΄ν„°
  • Last-ModifiedETagλ₯Ό μ‚¬μš©

2. 쑰건뢀 μš”μ²­ 헀더

  • 검증 ν—€λ”λ‘œ λ°›μ€ μ‘°κ±΄μ— λ”°λΌ λΆ„κΈ°κ°€ μƒκΈ°λŠ” ν—€λ”
  • If-Modified-Since인 κ²½μš°, Last-Modified μ‚¬μš©
    If-None-Match인 κ²½μš°, ETag μ‚¬μš©
  • 쑰건이 λ§Œμ‘±ν•˜λ©΄(= λ°μ΄ν„°κ°€ λ³€κ²½λ˜μ—ˆμ„ κ²½μš°), 200 OK
    쑰건이 λ§Œμ‘±ν•˜μ§€ μ•ŠμœΌλ©΄(= λ°μ΄ν„°κ°€ λ³€κ²½λ˜μ§€ μ•Šμ•˜μ„ κ²½μš°), 304 Not Modifed (HTTP λ°”λ”” 없이 헀더 메타 μ •λ³΄λ§Œ μ‘λ‹΅ν•œλ‹€.)

 

2. Last-Modified & ETag 🐟

1. Last-Modified

  • 데이터λ₯Ό μˆ˜μ •ν•œ λ‚ μ§œλ₯Ό μ €μž₯ν•œλ‹€.

2. ETag

  • μΊμ‹œμš© λ°μ΄ν„°μ— μž„μ˜μ˜ κ³ μœ ν•œ λ²„μ „ μ΄λ¦„을 λ‹€λŠ” κ²ƒ
  • 데이터λ₯Ό μˆ˜μ •ν•΄μ„œ λ‚ μ§œλŠ” λ‹€λ₯΄μ§€λ§Œ λ°μ΄ν„°μ˜ λ‚΄μš©μ΄ 같은 κ²½μš°μ— μ‚¬μš© κ°€λŠ₯ (Last-Modifiedλ₯Ό μ΄μš©ν•˜λ©΄ 기쑴의 데이터와 λ‹€λ₯΄λ‹€κ³  인식)

 

3. Last-Modified λ™μž‘ 방식 πŸ‹

  1. μ„œλ²„κ°€ λ°μ΄ν„°λ₯Ό λ³΄λ‚Ό λ•Œ Last-Modified μ •보λ₯Ό λ³΄λ‚Έλ‹€.
  2. μΊμ‹œ μœ νš¨ μ‹œκ°„이 μ§€λ‚˜ λ‹€μ‹œ λ°μ΄ν„°λ₯Ό μš”μ²­ν•  κ²½μš° If-modified-since μ •보λ₯Ό ν•¨κ»˜ λ³΄λ‚Έλ‹€.
  3. μ„œλ²„μ— μžˆλŠ” λ°μ΄ν„°μ˜ μ΅œμ’… μˆ˜μ •일이 If-modified-since와 κ°™μ€ κ²½μš° HTTP Body 없이 304 Not Modifiedλ₯Ό μ „솑
  4. 헀더 데이터λ₯Ό μ΄μš©ν•˜μ—¬ λΈŒλΌμš°μ €μ— μžˆλŠ” 데이터λ₯Ό κ°±μ‹ 
  5. μ›ΉλΈŒλΌμš°μ €λŠ” λΈŒλΌμš°μ € μΊμ‹œμ— μžˆλŠ” λ°μ΄ν„°λ₯Ό μž¬μ‚¬μš©

 

4. ETag λ™μž‘ 방식 🐬

  1. μ„œλ²„κ°€ λ°μ΄ν„°λ₯Ό λ³΄λ‚Ό λ•Œ ETag μ •보λ₯Ό λ³΄λ‚Έλ‹€.
  2. μΊμ‹œ μœ νš¨ μ‹œκ°„이 μ§€λ‚˜ λ‹€μ‹œ λ°μ΄ν„°λ₯Ό μš”μ²­ν•  κ²½μš° If-None-Match μ •보λ₯Ό ν•¨κ»˜ λ³΄λ‚Έλ‹€.
  3. μ„œλ²„μ— μžˆλŠ” λ°μ΄ν„°μ˜ ETag값이 If-None-Match의 κ°’κ³Ό κ°™μ€ κ²½μš° HTTP Body 없이 304 Not Modifiedλ₯Ό μ „솑
  4. 헀더 λ°μ΄ν„°λ₯Ό μ΄μš©ν•˜μ—¬ λΈŒλΌμš°μ €μ— μžˆλŠ” λ°μ΄ν„°λ₯Ό κ°±μ‹ 
  5. μ›ΉλΈŒλΌμš°μ €λŠ” λΈŒλΌμš°μ € μΊμ‹œμ— μžˆλŠ” λ°μ΄ν„°λ₯Ό μž¬μ‚¬μš©

 

ν•΄λ‹Ή 글은
κΉ€μ˜ν•œ λ‹˜μ˜ 'λͺ¨λ“  개발자λ₯Ό μœ„ν•œ HTTP μ›Ή κΈ°λ³Έ 지식'
λ₯Ό μ°Έκ³ ν•˜μ˜€μŠ΅λ‹ˆλ‹€.