캐시가 없으면
- 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운로드 받아야 한다.
- 인터넷 네트워크는 매우 느리고 비싸다.
- 브라우저 로딩 속도가 느리다.
- 느린 사용자 경험
캐시 적용시
캐시 시간 초과
- 캐시 만료후에도 서버에서 데이터를 변경하지 않음
- 생각해보면 데이터를 전송하는 대신에 저장해 두었던 캐시를 재사용 할 수 있다.
- 단 클라이언트의 데이터와 서버의 데이터가 같다는 사실을 확인할 수 있는 방법 필요
- 이때 사용되는 것이
검증헤더
이다.
클라이언트 요청 시 최종 수정일 Last-Modified
를 헤더에 넣어둔다. (검증헤더)
웹브라우저는 응답 결과를 캐시에 저장할때 Last-Modified도 함께 저장한다.
캐시 유효시간이 초과된 뒤, 다시 클라이언트가 요청할때, 브라우저 캐시 안에 Last-Modified가 있다면, 요청시에 조건부 요청인if-modified-since
값으로 함께 보낸다.
요청을 받은 서버는 if-modified-since값과 본인의 Last-Modified 값을 비교한다.
값이 같다면, 304 Not Modified 메시지와 함께 Last-Modified 값을 다시 보낸다. 이때는, HTTP Body를 빼고 헤더만 보낸다.
무거운 바디를 빼고 보내므로 네트워크 부하를 줄일 수 있다.
304 Not Modified를 받은 웹브라우저는 기존에 보유중이던 응답결과를 재사용하고, 헤더 데이터를 갱신한다.
요즘은 Pragma, Expires보다 Cache-Control에서 전부 커버