일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- anyMatch
- gitrevert
- DB방언
- initialDelay
- ERROR TYPE : org.apache.ibatis.binding.BindingException
- http
- JPA
- HTTPMESSAGE
- gitreset
- 김영한JPA
- 네이버 연결된 서비스
- fixedDelay
- 자바ORM표준프로그래밍
- RFC723x
- 데이터베이스 방언
- org.apache.ibatis.binding.BindingException
- SpringBoot
- Transaction not successfully started
- @Table
- 캐쉬가능
- KAKAOLOGINAPI
- 무상태프로토콜
- @Entity
- 네이버로그인API
- Git
- hibernate.dialect
- Invalid bound statement (not found)
- 멱등활용
- HTTP3
- 매핑정보가없는필드
- Today
- Total
twocowsong
[모든 개발자를 위한 HTTP 웹 기본 지식 - 31] 본문
검증 헤더와 조건부 요청2
• 검증 헤더
• 캐시 데이터와 서버 데이터가 같은지 검증하는 데이터
• Last-Modified , ETag
• 조건부 요청 헤더
• 검증 헤더로 조건에 따른 분기
• If-Modified-Since: Last-Modified 사용
• If-None-Match: ETag 사용
• 조건이 만족하면 200 OK ( 새로 다운 )
• 조건이 만족하지 않으면 304 Not Modified (브라우저 캐쉬에 이미지와 서버에이미지가 같은경우)
If-Modified-Since: 이후에 데이터가 수정되었으면?
데이터 미변경 예시 (다운로드 하지않음)
• 캐시: 2020년 11월 10일 10:00:00 vs 서버: 2020년 11월 10일 10:00:00
• 304 Not Modified, 헤더 데이터만 전송(BODY 미포함)
• 전송 용량 0.1M (헤더 0.1M, 바디 1.0M)
데이터 변경 예시 (새롭게 다운로드 함)
• 캐시: 2020년 11월 10일 10:00:00 vs 서버: 2020년 11월 10일 11:00:00
• 200 OK, 모든 데이터 전송(BODY 포함)
• 전송 용량 1.1M (헤더 0.1M, 바디 1.0M)
검증 헤더와 조건부 요청
Last-Modified, If-Modified-Since 단점
• 1초 미만(0.x초) 단위로 캐시 조정이 불가능
• 날짜 기반의 로직 사용
• 데이터를 수정해서 날짜가 다르지만, 같은 데이터를 수정해서 데이터 결과가 똑같은 경우
• 서버에서 별도의 캐시 로직을 관리하고 싶은 경우
• 예) 스페이스나 주석처럼 크게 영향이 없는 변경에서 캐시를 유지하고 싶은 경우
검증 헤더와 조건부 요청
• ETag(Entity Tag)
• 캐시용 데이터에 임의의 고유한 버전 이름을 달아둠
• 예) ETag: "v1.0", ETag: "a2jiodwjekjl3"
• 데이터가 변경되면 이 이름을 바꾸어서 변경함(Hash를 다시 생성)
• 예) ETag: "aaaaa" -> ETag: "bbbbb"
• 진짜 단순하게 ETag만 보내서 같으면 유지, 다르면 다시 받기! ETag, If-None-Match
ETag 사용시 이미지를 다운로드 받을때 헤더에 ETag가 추가됩니다.
클라이언트는 ETag를 같이 보냄으로 서버에서 이미지 변경하였는지 여부를 확인합니다.
'IT > HTTP' 카테고리의 다른 글
[모든 개발자를 위한 HTTP 웹 기본 지식 - 33] (0) | 2022.01.30 |
---|---|
[모든 개발자를 위한 HTTP 웹 기본 지식 - 32] (0) | 2022.01.30 |
[모든 개발자를 위한 HTTP 웹 기본 지식 - 30] (0) | 2022.01.30 |
[모든 개발자를 위한 HTTP 웹 기본 지식 - 29] (0) | 2022.01.30 |
[모든 개발자를 위한 HTTP 웹 기본 지식 - 28] (0) | 2022.01.29 |