์น ๋ธ๋ผ์ฐ์ ์์ ์๋ฒ๋ก ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ ๋, ์บ์๊ฐ ์์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์ง ์์๋๋ผ๋ ๋คํธ์ํฌ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋ค์ด๋ก๋ ๋ฐ์์ผ ํ๋ค.
์บ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ถํ์ํ ๋คํธ์ํฌ ํต์ ์์ด ์ข ๋ ๋น ๋ฅธ ์ฌ์ฉ์ ๊ฒฝํ์ ํ ์ ์๋ค.
๋ธ๋ผ์ฐ์ ์บ์๋ฅผ ์ ์ฉํ๋ ๋ฐฉ๋ฒ
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 ์น ๊ธฐ๋ณธ ์ง์