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
'📝공부, 스크랩 > 프로덕트' 카테고리의 다른 글
[개발필수지식] 코딩 필수 개념 (1) | 2023.04.06 |
---|---|
[개발필수지식] 정보와 데이터, 웹과앱, 프로그램 개발구조, 개발 순서와 뜻 (1) | 2023.04.04 |
쿠키 정의, 사용 특징 등 (0) | 2023.03.11 |
Http 상태코드 (1,2,3,4,5xx) (0) | 2023.02.25 |
URI 설계, HTTP 메서드 (0) | 2023.02.19 |