μΉμ΄ μ±μ₯νλ©΄μ μΉ μλ²λ‘λΆν° μ μ‘λλ μ 보μ ν¬κΈ°κ° κΈκ²©ν 컀μ§κ² λλ€. λ°μ΄ν°μ μ μ‘ μλλ₯Ό λμ΄κΈ° μν΄μ κ³ λ―Όνκ³ κ³ λ―Όνλ€ λμ¨ κ²°κ³Όλ¬Όμ΄ Http μΊμ κΈ°λ₯μ΄λ€.
μ΄λ―Έ λ€μ΄λ‘λ λ°μ μμμ λ€μ μΉ μλ²λ‘λΆν° λ€μ΄λ‘λλ₯Ό λ°μμΌ ν κΉ?
νλ² λ€μ΄λ‘λ λ°μ νμΌμ μ»΄ν¨ν°μ μ μ₯νλ€κ° κ°μ μμ²μ ν λ μΉ μλ²λ‘λΆν° λ€μ λ€μ΄λ‘λ λ°μ§ μκ³ μ μ₯ν΄λμ μμμ μ¬μ©νλ€λ©΄ λ€νΈμν¬λ₯Ό ν΅νμ§ μκ³ μμμ μ¬μ©ν μ μμ΄ μ¬μ©μλ λ€νΈμν¬ μ§μ°μΌλ‘ λ°μνλ μλ μ νλ₯Ό κ²ͺμ§ μμλ λλ€.
*μμ: html, javascript, css, jpg, pdf, docs λ±
μΉ λΈλΌμ°μ κ° μΊμλ₯Ό μ¬μ©νκ³ μμ λ μΉ μλ²μμ μΉ λΈλΌμ°μ κ° μΊμν μμμ λ³κ²½νλ©΄ μ΄λ»κ² λ κΉ?
μλ§ μΉ λΈλΌμ°μ λ μλ²μμ λ³κ²½λ κ²μ μΈμ§νμ§ λͺ»νκ³ κ΅¬ λ²μ μ μμμ κ³μ μ¬μ©νκ³ μμ κ²μ΄λ€.π€¦ββοΈ μ΄λ° μ리 μλ μμ°μ± κ°μ μν©μ μλ°©νκΈ° μν΄ Httpμ μΊμ κ΄λ ¨ ν€λμ μΊμλ₯Ό μ΅μ μνλ‘ μ μ§νλ λ°©λ²μλ μ΄λ€ κ²λ€μ΄ μμμ§ μμ보μ!!!
μΉ μλ²κ° μΉ λΈλΌμ°μ μκ² μμμ μ μ‘ν λ ν΄λΉ μμμ΄ μΈμ λ§μ§λ§μΌλ‘ μμ λμλμ§μ λν λ μ§ μ 보λ₯Ό Last-Modifiedμ λ΄μμ 보λΈλ€. μΉ λΈλΌμ°μ λ μΊμλ₯Ό μ μ₯ν λ Last-Modfied μ 보λ κ°μ΄ μ μ₯νκ² λλ€.
μΉ λΈλΌμ°μ κ° μΉ μλ²μκ² μΊμν μμμ΄ μ ν¨νμ§ λ¬Όμ΄λ³Ό λ 보λ΄λ κ°μΌλ‘, μΉ μλ²λ‘ λΆν° μμμ λ€μ΄λ‘λ λ°μ λ Response header μ λ³΄λ‘ λ°μ Last-Modified κ°μ If-Modified-Since λ΄μ 보λΈλ€. μΉ μλ²λ μ λ¬λ°μ If-Modified-Since κ°κ³Ό μλ² μμμ Last-Modifiedμ λΉκ΅νλ€.
Response headerμΈ Last-Modifiedμ κ°λ§ κ°μ§κ³ μΊμ μμμ μ ν¨μ±μ νλ¨νκΈ°μλ λΆμ νν μ μλ€. μ νν μΊμ μμμ μ ν¨μ±μ κ²μ¬νκΈ° μν΄ ETag κ°μ νμ©νλ€. μΉ λΈλΌμ°μ λ μΊμ μμμ μ μ₯ν λ ETag κ°λ κ°μ΄ μ μ₯νλ€.
*ETag: μμμ μλ³νλ κ³ μ ν λ¬Έμμ΄ μ λλ‘ ν΄μν¨.
μΉ λΈλΌμ°μ κ° μΉ μλ²μκ² μΊμν μμμ΄ μ ν¨νμ§ λ¬Όμ΄λ³Ό λ 보λ΄λ κ°μΌλ‘, μΉ μλ²λ‘ λΆν° μμμ λ€μ΄λ‘λ λ°μ λ Response header μ λ³΄λ‘ λ°μ ETag κ°μ If-None-Matchμ λ΄μ 보λΈλ€. μΉ μλ²λ Request λ°μ If-None-Match κ°κ³Ό μλ² μμμ ETagκ°κ³Ό λΉκ΅νλ€.
νλ‘κ·Έλλ¨Έκ° μΊμλ₯Ό μ μ΄νκΈ° μν΄ Http headerμλ Cache-Controlμ΄λΌλ μμ±μ΄ μλ€. νλ² μμ보μ!!!
μΉ μλ²κ° μμμ μΉ λΈλΌμ°μ μ μ μ‘ν λ Http response headerμ Cache-Controlμ no-storeλ‘ μ€μ νλ©΄, μΉ λΈλΌμ°μ λ λ¬΄μ¨ μΌμ΄ μμ΄λ ν΄λΉ μμμ μΊμ νμ§ μλλ€. νμ μ΅μ νλ μμμ μλ²λ‘λΆν° λ°μ μ¬ μ μλ μ₯μ μ΄ μμ§λ§, λ§€λ² λ€μ΄λ‘λ ν΄μΌ νλ λ¨μ μ΄ μλ€.
μ΄λ¦μ΄ no-cacheλΌκ³ ν΄μ μΊμλ₯Ό μ μ₯νμ§ μλ κ² μλλ€. μ£Όμνμ!!!
μΉ μλ²κ° μμμ μΉ λΈλΌμ°μ μ μ μ‘ν λ Cache-Controlμ no-cacheλ‘ μ€μ νλ©΄, μΉ λΈλΌμ°μ λ ν΄λΉ μμμ μΊμν ν κ°μ μμ²μ ν λλ§λ€ μΉ μλ²μκ² μΊμκ° μ ν¨νμ§ νμ νμΈνλ€.
μ΄λ max-age: 0μΌλ‘ μ€μ ν κ²κ³Ό κ°μΌλ―λ‘, max-ageκ° λ§λ£λμμ λ λμμ λ°λ‘ μλ max-ageμμ νμΈνμ.
max-ageλ μ΄ λ¨μ μ λ ₯μ ν΅ν΄ μΊμμ λ§λ£ μκ° μ§μ ν μ μλ€. Http response headerμ max-age: 3600μΌλ‘ μ€μ λμ΄ μμΌλ©΄ μΉ λΈλΌμ°μ λ μΉ μλ²λ‘λΆν° μμμ λ°μ μΊμν μ΄ν κ°μ μμ²μ νκ² λλ©΄ 1μκ° λμ μ»΄ν¨ν°μ μ μ₯λμ΄μλ μΊμ μμμ νμ©νλ€. μ΄ λ°©μμ μμμ μ¬μ¬μ©ν΄ μ¬μ©μλ μλκ° λΉ λ₯Έ μλΉμ€λ₯Ό λ°μ μ μμ§λ§, μΉ μλ² μμμ λ³κ²½μ¬νμ μΉ λΈλΌμ°μ κ° μμμ±μ§ λͺ»νλ€λ λ¨μ μ΄ μλ€.
λ§μ½ 1μκ°μ΄ μ§λ ν μΉ λΈλΌμ°μ κ° κ°μ μμ²μ νκ² λλ©΄ μ΄λ»κ² λμν κΉ?
λ§λ£κ° λλ€κ³ μΊμν μμμ λ²λ¦¬μ§ μλλ€. λ§λ£ μκ°μ΄ μ§λ μΊμ μμμ λ€μ μ¬μ©ν΄λ λλμ§ μΉ μλ²μκ² λ¬Όμ΄λ³΄λλ°, μ΄λ Request headerμ if-Modified-Since, If-None-Matchμ ν¬ν¨ν header μ λ³΄λ§ μ μ‘νλ€.
μΉ μλ²λ Request headerμ if-Modified-Since, If-None-Matchμ κ°μ λΉκ΅νμ¬ μ ν¨μ± κ²μ¬λ₯Ό νλ€. ν΄λΉ λΆλΆμ μ ν¨μ± κ²μ¬λ μ΄λ―Έ μ€λͺ νμΌλ μλ΅νκ² λ€.
max-age κ°μ μ μ§μ νλ€λ©΄, λ€νΈμν¬ νΈλν½ κ°μμ λλΆμ΄ 리μμ€λ₯Ό μ μ λ μκ² μΉ λΈλΌμ°μ μκ² μ 곡ν μ μλ€.
μ 무λ₯Ό νλ©΄μ μΊμλ₯Ό λ€λ£¬ μ μ΄ μμλ κ² κ°λ€. μ΄λ° λΆλΆμ λ°μ±ν΄μΌκ² λ€. μΊμλ₯Ό νμ©νλ©΄ λ€νΈμν¬ νΈλν½μ ν¨κ³Όμ μΌλ‘ μ€μΌ μ μλ€. νμ§λ§, μΊμλ₯Ό μ¬μΈνκ² μ»¨νΈλ‘€ν΄μΌ νλ€λ κ²μ μ΄λ² ν¬μ€ν μ ν΅ν΄ λλ μ μμλ€.
Application CacheλΌλ κ²μ μ΄μ©νλ©΄ λ€νΈμν¬κ° λ겨 μμ΄λ μΊμ λ λ°μ΄ν°λ₯Ό μ΄μ©ν΄μ μΉ μ ν리μΌμ΄μ μ΄ λμνκ² ν μ μλ€κ³ νλ€. ν΄λΉ λΆλΆλ μΆν κΈ°νκ° λλ€λ©΄ μμλ³΄κ³ μΆλ€.
Caching Serverμ λν΄μλ μΆκ°λ‘ 곡λΆν΄μΌκ² λ€. μ€κ°μ Caching Serverλ₯Ό λ κ²½μ° μΊμκ° μ΄λ»κ² λμνλμ§λ μμλ³΄κ³ μΆλ€. AWSμμ CDNμ΄ μλλ°, μ¬μ©μμ μλ²κ° μ§λ¦¬μ μΌλ‘ κ±°λ¦¬κ° λ© κ²½μ° μ€κ°μ CDNμ΄ μλ²λ₯Ό μΊμ±νκ³ μ¬μ©μμ ν΅μ νλλ° μ΄λ° κ²κ³Ό λΉμ·ν κ±ΈκΉ???