Cache-Control
작성캐시를 사용하지 않을 경우
- 동일한 이미지를 계속 다시 받아야 함. 네트워크 리소스 낭비
캐시를 사용한 경우
- 서버에서 응답 보내줄 때 이미지 파일과 함께 헤더에
Cache-Control
을 작성해서 보내줌
(Cache-Control: max-age=60
: 파일이 60초 동안 유효)
- 두 번째 요청부터는 캐시를 우선 조회.
유효 시간 내라면 캐시에서 해당하는 데이터를 가져와서 사용
- 유효 시간이 지났다면 서버에서 다시 이미지를 받아오게 된다.
캐시 유효 시간은 지났지만, 서버에서 다시 받아야 하는 파일이 캐시에 저장되어 있는 파일과 동일한 경우
👉🏽 서버의 파일과 캐시의 파일이 동일한지 확인해서 재사용
(HTTP 헤더 중 캐시 검증헤더와 조건부 요청 헤더 이용)
Last-Modified
- 데이터가 마지막으로 수정된 시점을 의미하는 응답 헤더
- 조건부 요청 헤더인
If-Modified-Since
와 묶어서 사용Etag
- 데이터의 버전을 의미하는 응답 헤더
- 조건부 요청 헤더인
If-None-Matxh
와 묶어서 사용
If-Modified-Since
- 캐시된 리소스의
Last-Modified
값 이후에 서버 리소스가 수정되었는지 확인하고, 수정되지 않았다면 캐시된 리소스를 사용If-None-Match
- 캐시된 리소스의
ETag
값과 현재 서버 리소스의ETag
값이 같은지 확인하고, 같으면 캐시된 리소스를 사용
Last-Modified(응답 헤더)
와 If-Modified-Since(요청 헤더)
,Etag(응답 헤더)
와 If-None-Match(요청 헤더)
두 쌍의 헤더를 동시에 사용.1) 첫 요청 보낸 후 응답의
Last-Modified
헤더에 담겨서 오는 파일이 마지막으로 수정된 시간이 캐시에 저장됨.
2) 캐시 유효 시간(60초)을 초과한 후 두 번째 요청.
캐시에 담겨있는 파일 최종 수정시간 데이터를If-Modified-Since
요청 헤더에 담아 보냄.
(동일한 파일이라면 값이 동일해야 함)
3) 동일한 데이터임이 검증됐다면 서버는 '데이터가 수정되지 않았음'을 의미하는
304 Not Modified
라는 응답을 보내준다.
캐시 데이터 유효 시간이 갱신되면서 해당 데이터를 재사용 할 수 있게 된다.
1) 첫 요청 보낸 후 응답의
Etag
헤더에 담겨서 오는 파일의 버전이 캐시에 저장됨.
2) 캐시 유효 시간(60초)을 초과한 후 두 번째 요청.
캐시에 담겨있는 파일 버전을If-None-Match
요청 헤더에 담아 보냄.
(동일한 버전이라면 값이 동일해야 함)
3) 동일한 데이터임이 검증됐다면 서버는 '데이터가 수정되지 않았음'을 의미하는
304 Not Modified
라는 응답을 보내준다.
캐시 데이터 유효 시간이 갱신되면서 해당 데이터를 재사용 할 수 있게 된다.