캐시(Cache)-(1)
캐시가 없을 경우
데이터가 변경되지 않아도 계속 네트워크를 통해 데이터를 다운로드 받아야한다
느리고 비싼 네트워크
브라우저 로딩 속도가 느리다
느린 사용자경험
캐시 사용할때
캐시 가능 시간동안 네트워크를 사용하지 않아도 된다
비싼 네트워크 사용량 줄이기 가능
브라우저 로딩 속도 빠름
빠른 사용자 경험
캐시 시간이 초과
서버를통해 데이터 다시조회 캐시 갱신
네트워크 다운로드 발생
- 네트워크 다운로드가 발생하지만 용량이 적은 헤더정보만 다운로드함
- 캐시 유효 시간이 초과해도, 서버의 데이터가 갱신되지 않으면 304 Not Modified + 헤더 메타 정보만 응답함
- 클라이언트는 서버가 보낸 헤더 정보로 캐시의 메타 정보 갱신과 캐시에 저장된 데이터를 재활용 함
검증 헤더와 조건부 요청
검증헤더 = 캐시데이터와 서버데이터가 같은지 검증하는 데이터
Last-Modified , ETag
조건부 요청 헤더
- 검증헤더로 조건에 따른 분기
- If-Modified-Since : Last-Modified 사용
- If-None-Match: ETag 사용
- 조건이 만족하면 200 OK
- 조건이 만족하지않으면 304 Not Modified
If-Modified-Since : Last-Modified 단점
1초 미만 단위로 캐시조정 불가능
날짜기반의 로직 사용
데이터 수정으로 날짜가 다르지만, 같은 데이터를 수정해서 데이터 결과가 같은경우
ETag
-캐시 데이터에 임의의 고유한 버전 이름을 달아둠
-데이터가 변경되면 이 이름을 바꿔 변경함(Hash를 다시 생성)
-단순히 ETa만 보내서 같으면 유지 , 다르면 다시 받기!
ETag 의 장점
- 캐시 제어 로직을 서버에서 완전히 관리
-클라이언트는 단순히 이 값을 서버에 제공 ( 클라이언트는 캐시 매커니즘을 모름)