HTTP
클라이언트와 서버가 연결을 유지하는 TCP/IP 에 비해
HTTP는 요청을 주고 받을 때만 연결을 유지하고 응답을 주고나면 TCP/IP 연결을 끊습니다.
다수의 데이터를 요청하고 응답 받을 시에는 연결/종료를 수없이 반복해야 하는 단점이 있었지만 최근에는 HTTP 지속 연결(Persistent Connections)로 단점을 해결하였습니다.
연결이 이루어진 뒤 각각의 데이터를 요청하고 모든 응답이 돌아온 후에 연결을 종료합니다.
Cache(캐쉬)
데이터나 값을 미리 복사해 놓는 임시 장소
캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용
'Cache-Control:max-age=60' in http 메시지(응답) 헤더
캐쉬 유효 기간(60초) 설정
'Last-Modified:2021년 8월 9일 08:00:00'
in http 메시지(응답) 헤더
데이터 최종 수정일 정보를 함께 응답받고 저장합니다.
'If-Modified-Since:2021년 8월 9일 08:00:00'
in http 메시지(요청) 헤더
조건부 캐쉬 요청을 하여 캐쉬 유효기간이 다 되었더라도 상기 조건을 만족하면 http 메시지(응답)을 데이터 없이 수신하고 유효 기간 지난 캐쉬를 갱신한다.
날짜 기반으로 검증을 한다.
'ETag:"845eed06cdc5623423cd"
in http 메시지(응답) 헤더
서버에서 헤더에 Etag를 작성해 응답하고 클라이언트는 캐쉬에 해당 ETag를 저장합니다.
'If-None-Match:"845eed06cdc5623423cd"'
in http 메시지(요청) 헤더
조건부 캐쉬 요청을 하여 캐쉬 유효기간이 다 되었더라도 ETag 값이 동일하면 http 메시지(응답)을 데이터 없이 수신하고 유효 기간 지난 캐쉬를 갱신한다.
ETag를 기반으로 검증을 하며 캐시 제어 로직을 서버에서 관리
(클라이언트는 단순히 사용만 할뿐 매커니즘은 모름)