네트워크에서의 캐시란?
- HTTP는 상태를 유지하지 않는다.
- 그렇다면 자원을 요청할 때 마다 자원은 새롭게 응답될까?
- 서버의 지연을 줄이기 위해 웹 페이지, 이미지 등의 자원 사본을 임시 저장하는 웹 기술
- 캐시된 자원이 저장되는 공간 : 클라이언트(브라우저) 혹은 특별한 서버(캐시 서버, 프록시 서버)
cache-controll 헤더
- cache-controll 헤더로 캐시 기능을 알린다
- cache-controll : max-age = 숫자(초) → 캐시한 자원의 지속 시간
- cache-controll : no-cache → 캐시 가능한 자원이나, 항상 origin(본) 서버에 검증하기
- cache-control: no-store → 캐시 하면 안될 자원
지속 시간 : 지속시간보다 넘어가면 다시 요청해야한다, 유효기간
캐시된 자원에는 유효 기간이 있다.
- 해당 자원이 언제 마지막으로 변경되었는지를 알리는 Last-Modified 헤더
캐시된 자원의 변경
- 캐시란 서버의 지연을 줄이기 위해 웹 페이지, 이미지 등의 자원 사본을 임시 저장하는 웹 기술
- 캐시된 자원이 변경되었다면?
캐시된 자원의 변경 -1
- 클라이언트는 요청시 if-modified-since 헤더로 특정 시점 이후 자원 변경 여부를 묻는다.
- 만일 변경되었다면 다시 다운로드(다시 전송해준다)
- 만일 변경되지 않았다면 서버는 304 Not Modified 응답을 보낸다, (redirect)
→ 자원 변경 안됐으니까 캐시로 redirect 해라라는 의미
캐시된 자원의 변경 - 2
- Etag를 통해 자원의 변경 여부 감지 가능
- 서버는 캐시된 자원이 Etag라는 식별 문자를 붙이고,
- 클라이언트는 If-None-Match 헤더를 통해 해당 Etag가 변경되었는지를 물어본다.(검증)
- Etag : 자원의 붙이는 버전 이름