λΈλΌμ°μ μΊμ± μ λ΅
μΉ λΈλΌμ°μ μμ μλ²λ‘ λ°μ΄ν°λ₯Ό μμ²ν λ, μΊμκ° μμ κ²½μ° λ°μ΄ν°κ° λ³κ²½λμ§ μμλλΌλ λ€νΈμν¬λ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό λ€μ΄λ‘λ λ°μμΌ νλ€.
μΊμλ₯Ό μ¬μ©νλ©΄ λΆνμν λ€νΈμν¬ ν΅μ μμ΄ μ’ λ λΉ λ₯Έ μ¬μ©μ κ²½νμ ν μ μλ€.
λΈλΌμ°μ μΊμλ₯Ό μ μ©νλ λ°©λ²
1. cache-control μ μ©
- response headerμ μΊμκ° μ ν¨ν μκ°(μ΄)λ₯Ό ν¨κ» λ°νν΄ λΈλΌμ°μ κ° ν΄λΉ μκ°λμ μΊμλ‘ μλ΅ κ²°κ³Όλ₯Ό μ μ₯νλλ‘ νλ€.
- μΊμ μκ°μ΄ μ΄κ³Όλλ©΄ λ€μ λ€νΈμν¬λ‘ μμ²μ λ³΄λ΄ μλ΅μ κ°μ Έμ€κ³ λ€μ μ ν¨μκ°λμ μΊμλ‘ μ μ₯νκ² λλ€. (κ°±μ )
- λΈλΌμ°μ λ cache-control μ 보λ₯Ό λ°μΌλ©΄ μ€μ λ μκ°λμ μλ‘μ΄ μμ²μ΄ μλ 리μμ€λ₯Ό μμ²νμ§ μλλ€.
- ν΄λΌμ΄μΈνΈμ λ©λͺ¨λ¦¬ μΊμ -> λμ€ν¬ μΊμ μμΌλ‘ νμΈνμ¬ λ°μ΄ν°λ₯Ό μ°Ύλλ€.
EX) cache-control: max-age=60(μ΄)
2. μΊμ μκ°μ μ΄κ³Ό
μΊμ μ ν¨ μκ°μ΄ μ΄κ³Όν κ²½μ° μλμ κ°μ μλ²λ μλ 2κ°μ§ μν© μ€ νλλ₯Ό κ°μ§ κ²μ΄λ€.
1) μλ²μμ κΈ°μ‘΄ λ°μ΄ν°λ₯Ό λ³κ²½
2) μλ²μμ κΈ°μ‘΄ λ°μ΄ν°λ₯Ό λ³κ²½νμ§ μμ
λ§μ½ μΊμ λ§λ£νμλ μλ²μμ λ°μ΄ν°κ° λ³κ²½λμ§ μμλ€λ©΄ λΈλΌμ°μ μ μΊμλ₯Ό μ¬μ¬μ©ν μ μλ€.
μ΄λ₯Ό μν΄ ν΄λΌμ΄μΈνΈμ μΊμ λ°μ΄ν°μ μλ²μ λ°μ΄ν°κ° κ°λ€λ μ¬μ€μ νμΈν μ μλ λ°©λ²μ΄ νμνλ€.
3. κ²μ¦ ν€λ μΆκ° (Last-Modified)
1) λ°μ΄ν°κ° λ§μ§λ§μ μμ λ μκ° μΆκ°
λ°μ΄ν°κ° λ§μ§λ§μ μμ λ μκ°μ μλ΅ν€λμ ν¨κ» 보λ
μ΅λ μΊμ μ ν¨μκ°μ΄ μ§λ κ²½μ°
λΈλΌμ°μ μΊμκ° κ°μ§κ³ μλ, λ°μ΄ν° μ΅μ’ μμ μΌμ΄νλ‘ λ³κ²½λμλμ§ μ‘°κ±΄λΆ μμ²(If-Modified-Since)μ ν¨κ» 보λμ λ,
λ§μ½ λ°μ΄ν°κ° μμ§ λ³κ²½λμ§ μμλ€λ©΄ 304(Not Modified) μλ΅κ³Ό ν¨κ» μλ²λ body μμ΄ μλ΅μ μ€λ€.
κ²°κ³Όμ μΌλ‘ λ€νΈμν¬λ₯Ό νκΈ΄ νμ§λ§ Bodyκ° μμ΄ μ€κΈ° λλ¬Έμ ν¨μ¬ μ μ λΉμ©μΌλ‘ ν΅μ μ΄ κ°λ₯νλ€.
4. κ²μ¦ ν€λ μΆκ° (ETag)
- λ°μ΄ν°λ₯Ό μμ ν΄μ λ μ§λ λ³κ²½λμμ§λ§ λ§μ½ κ°μ λ°μ΄ν°λ₯Ό μμ ν΄μ κ²°κ³Όκ° λκ°μ κ²½μ° μΊμλ₯Ό μ μ§ν μ μλ λ°©λ²μ΄ μλ€.
- ETag λ μΊμμ© λ°μ΄ν°μ λν΄ κ³ μ ν ν΄μκ°μ μμ±νμ¬ μ€μ λ‘ κ°μ΄ κ°μΌλ©΄ κ°μ ν΄μκ°μ κ°μ§λ€.
μλ΅ ν€λμ ETag λ₯Ό λ΄μμ 보λ΄μ£Όλ©΄ λΈλΌμ°μ μΊμκ° ν΄μκ°μ μ μ₯νλ€.
λ§μ½, λΈλΌμ°μ μ ν¨ μΊμ μκ°μ΄ λ§λ£λμ΄ μ‘°κ±΄λΆ μμ²(If-None-Match)κ³Ό ν¨κ» μλ²μ μμ²μ 보λ΄κ² λλ©΄
λ§μ°¬κ°μ§λ‘ ν΄μκ°μ λΉκ΅ν΄μ λ°μ΄ν°μ λ³κ²½μ΄ μλ κ²½μ° 304(Not Modified) μλ΅μ 보λ΄μ€λ€.
μ¦ κ²μ¦ν€λμ μ‘°κ±΄λΆ μμ²μ ν¨κ» μ°μΈλ€.
- If-Modified-Since: Last-Modified μ¬μ©
- If-None-Match: ETag μ¬μ©
μΊμ μ μ΄ ν€λ
1. Cach-Control: max-age -> μΊμ μ ν¨ μκ°, μ΄ λ¨μ
2. Cach-Control: no-cache -> λ°μ΄ν°λ μΊμν΄λ λμ§λ§, νμ μ μλ²μμ κ²μ¦νκ³ μ¬μ©, μ μλ² μ κ·Ό λΆκ°ν κ²½μ° μΊμ λ°μ΄ν° λ°ν κ°λ₯
3. Cach-Control: no-store -> λ°μ΄ν° μ μ₯νλ©΄ μλ¨ (λ©λͺ¨λ¦¬μμ μ¬μ©νκ³ μ΅λν 빨리 μμ )
4. Cache-Control: must-revalidate -> μΊμ λ§λ£ ν μ΅μ΄ μ‘°νμ μ μλ²(νλ‘μ μΊμ μλ² X)μ κ²μ¦, μ μλ² μ κ·Ό λΆκ°ν κ²½μ° μ€λ₯ λ°μ
νλ‘μ μΊμ
- Cache-Control : public -> μλ΅μ΄ public μΊμμ μ μ₯λμ΄λ λ¨
- Cache-Control : private -> μλ΅μ΄ ν΄λΉ μ¬μ©μλ§ μν κ²μ΄λΌ private μΊμμ μ μ₯ν΄μΌν¨
- Cache-Control : s-maxage -> νλ‘μ μΊμμλ§ μ μ©λλ max-age
- Age : 60 (HTTP ν€λ) -> μ μλ² μλ΅ ν νλ‘μ μΊμ λ΄μ λ¨Έλ¬Έ μκ°
μΆμ²
κΉμνλ κ°μ - λͺ¨λ κ°λ°μλ₯Ό μν HTTP μΉ κΈ°λ³Έ μ§μ