본문 바로가기
📝공부, 스크랩/프로덕트

조건부요청, Etag, 프록시캐시

by grow_s0 2023. 3. 11.
728x90
조건부요청, Etag

캐시가 없다면

  • 데이터가 변경되지 않아도 계속 네트워크를 통해 다운받아야 함
  • 로딩 속도가 느려지고 비쌈

 

캐시가 있다면

  • 캐시 유효 시간동안 네트워크를 사용하지 않아도 됨
  • 빠르고 저렴함

 

캐시 시간이 초과되면 서버를 통해 데이터를 다시 조회하고, 응답 결과를 다시 캐시에 저장 (갱신)

=> 조건부 헤더를 사용해서 해결

 

1. 캐시 만료 후 서버에서 데이터 변경이 되지 않았다면

  • '검증 헤더'를 토대로 데이터가 마지막에 수정된 시간으로부터 달라졌는지 체크
  • 수정되지 않았다면 HTTP Body를 전송하지 않음. 304 Not Modified로 전달
  • 쿠키는 응답 결과를 재사용하고 헤더 데이터만 갱신
  • 캐시에서 조회

=> 용량이 적은 헤더 정보만 네트워크에서 다운로드 받는거라 실용적

 

2. 데이터가 변경됐다면

200OK 띄우고 모든 데이터 전송

 

 

[조건부 요청 단점]

  • 1초 미만(0.x초) 단위로 캐시 조정이 불가능
  • 날짜 기반의 로직 사용
  • 데이터를 수정해서 날짜가 다르지만, 같은 데이터를 수정해서 데이터 결과가 똑같은 경우
  • 서버에서 별도의 캐시 로직을 관리하고 싶은 경우 

=> Etag 사용 (데이터가 변경되면 Etag 이름을 변경)

 

 

프록시 캐시

no-cache

원 서버에 접근할 수 없는 경우 캐시 서버 설정에 따라서 캐시 데이터를 반환할 수 있음

Error or 200 OK (오류 보다는 오래된 데이타라도 보여주자)

 

must-revalidate

원 서버에 접근할 수 없는 경우, 항상 오류가 발생해야 함

504 Gateway Timeout (매우 중요한 돈과 관련된 결과로 생각해보자) 

728x90