You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
데이터 최종 수정일이 캐시의 검증 헤더와 맞춰서 판단이 가능
수정이 없으면: 304 Not Modified, HTTP 바디가 없음
네트워크 부하가 줄어든다.
검증 헤더와 조건부 요청 - 정리
Last-Modified, if-modified-since
캐시 유효 시간이 초과해도 서버의 데이터가 갱신되지 않으면
304 Not Modified + 헤더 메타 정보만 응답(바디x)
클라이언트는 서버가 보낸 응답 헤더 정보로 캐시의 메타 정보를 갱신
클라이언트는 캐시에 저장되어 있는 데이터 재활용
결과적으로 네트워크 다운로드가 발생하지만 용량이 적은 헤더 정보만 다운로드
매우 실용적인 해결책
검증 헤더와 조건부 요청 2
검증 헤더
캐시 데이터와 서버 데이터가 같은지 검증하는 데이터
Last-Modified, ETag
조건부 요청 헤더
검증 헤더로 조건에 따른 분기
If-Modified-Since : Last-Modified 사용
If-None-Match : ETag 사용
조건이 만족하면 200 OK
조건이 만족하지 않으면 304 Not Modified
-If-Modified-Since : 이후에 데이터가 수정되었으면 ?
- 데이터 미변경 예시
- 캐시 vs 서버 : 똑같으면
- 304 Not Modified, 헤더 데이터만 전송(BODY 미포함)
- 전송 용량 0.1M (헤더 0.1M, 바디 1.0M)
- 데이터 변경 예시
- 캐시 vs 서버 : 다르면
- 200 OK, 모든 데이터 전송(BODY 포함)
- 전송 용량 1.1M (헤더 0.1M, 바디 1.0M)
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
캐시 기본 동작
캐시가 없을때
캐시 적용
서버에 캐시 적용하면 cache-control : 유효시간
max-age : 초단위
응답 결과를 캐시에 저장하면 캐시에서 조회
캐시 덕분에 캐시 가능 시간동안 네트워크를 사용하지 않아도 된다.
비싼 네트워크 사용량을 줄일 수 있다.
브라우저 로딩 속도가 매우 빠르다.
빠른 사용자 경험
캐시 적용: 캐시 시간 초과
3번째 요청: 캐시 시간 초과되었을때



다시 요청( 캐시 유효한 시간 똑같이)
덮어씌우면서 초기화
캐시 유효 시간이 초과하면, 서버를 통해 데이터를 다시 조회하고 캐시를 갱신한다.
이때 다시 네트워크 다운로드가 발생한다.
검증 헤더와 조건부 요청 1
캐시 시간 초과
검증 헤더 추가
Last-Modified : 최종수정일(UTC)
if-modified-since : HTTP 요청 헤더 _ 날짜 맞추기
데이터 최종 수정일이 캐시의 검증 헤더와 맞춰서 판단이 가능
수정이 없으면: 304 Not Modified, HTTP 바디가 없음
네트워크 부하가 줄어든다.
검증 헤더와 조건부 요청 - 정리
Last-Modified, if-modified-since
검증 헤더와 조건부 요청 2
검증 헤더
조건부 요청 헤더
-If-Modified-Since : 이후에 데이터가 수정되었으면 ?
- 데이터 미변경 예시
- 캐시 vs 서버 : 똑같으면
- 304 Not Modified, 헤더 데이터만 전송(BODY 미포함)
- 전송 용량 0.1M (헤더 0.1M, 바디 1.0M)
- 데이터 변경 예시
- 캐시 vs 서버 : 다르면
- 200 OK, 모든 데이터 전송(BODY 포함)
- 전송 용량 1.1M (헤더 0.1M, 바디 1.0M)
검증 헤더와 조건부 요청: Last-Modified, If-Modified-Since 단점
검증 헤더와 조건부 요청 : ETag, If-None-Match
<ETag 사용하는 방법>


매치가 안되면 실패, 데이터가 수정이 안된 것
304 Not Modified
검증 헤더와 조건부 요청 : ETag, If-None-Match 정리
캐시와 조건부 요청 헤더
캐시 제어 헤더
Cache-Control(캐시 지시어, directives)
Pragma(캐시 제어, 하위 호환)
Expires (캐시 만료일 지정, 하위 호환)
검증 헤더와 조건부 요청 헤더
검증 헤더(Validator)
조건부 요청 헤더
프록시 캐시
원 서버 직접 접근: origin 서버
프록시 캐시 도입
Cache-Control : 캐시 지시어(directives) : 기타
원서버 : origin
캐시 무효화
Cache-Control : 확실한 캐시 무효화 응답
Cache-Control : 캐시 지시어 (directives) - 확실한 캐시 무효화
Cache-Control : no-cache
Cache-Control : no-store
(메모리에서 사용하고 최대한 빨리 삭제)
Cache-Control : must-revalidate
Pragma: no-cache
다음으로
HTTP 스펙
HTTP 완벽 가이드 책
All reactions