페이지를 열 때, 오랜 시간이 걸리지 않도록 페이지를 캐시해서 캐시해둔 파일을 사용한다면, 네트워크 지연이 되지 않고 금전적으로 절약이 된다.

캐시를 사용한다면, 과거의 파일을 볼 수 있다. 최신 상태로 유지하는게 어렵다.

Cache Control: no store

: 캐시에 저장하지 않음

Cache Control: max-age=[초]

: 캐시 만료 기간 설정을 하는데 브라우저는 Last-Modified인 수정된 Date를 비교하여 파일을 다시 가져온다. 그 전까지는 헤더만 주고 받는다.

ETag

파일 다운로드, Last-Modified, ETag, 웹 서버, 리퀘스트 헤더의 If-None-Match, If-Modified-Since, 304 Not Modified

파일을 다운 받을 때, Last-Modified를 기준으로 저장하고 있는 정보가 최신인지 아닌지를 결정할 수 있다. 하지만 Last-Modified는 초까지 나타내는데, 이 초까지만 표시해주는 최종시간은 부정확한 경우도 존재한다. 이러한 상황에서 웹 브라우저는 ETag의 정보와 함께 파일을 캐시로서 저장하게 된다.

웹 서버에 그 다음에 저장할 때는 리퀘스트 헤더의 if-none-match라는 속성에 ETag의 정보를 요청한다. 웹서버는 if-none-match라는 태그 값과 지금 서비스 해야하는 파일의 ETag 값이 같다면, 304 Not Modified를 반환하고, 다르면 200을 주면서 새로운 내용을 보내줍니다.

웹서버는 ETag와 Last-Modified라는 두 개의 값을 준다. 그러면 브라우저는 다음에 웹 서버에게 요청할 때, ETag는 If-None-Match, Last-Modified는 If-Modified-Since 헤더 값에 넣어서 웹서버로 요청을한다. 웹 서버는 둘 중에 하나라도 다르면 파일을 보내준다.