Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Greedy
- kotlin
- 김영한
- Proxy
- 스프링
- 그리디
- jpa
- 자바
- 스프링 핵심 기능
- 인프런
- Servlet
- AOP
- transaction
- Thymeleaf
- 알고리즘
- Exception
- springdatajpa
- Android
- JPQL
- db
- pointcut
- 스프링 핵심 원리
- QueryDSL
- 백준
- SpringBoot
- http
- JDBC
- spring
- java
- Spring Boot
Archives
- Today
- Total
개발자되기 프로젝트
검증헤더와 조건부 요청 1 본문
1. 캐시 유효 시간이 초과한 경우..?
캐시 유효 시간이 초과하여 서버에 재 요청했을 때 서버는 둘 중 한 가지 상황이다.
- 서버에서 기존 데이터를 변경함
- 서버에서 기존 데이터를 변경하지 않음.
2. 서버에서 데이터를 변경하지 않은 경우
- 캐시 만료 이후에 서버에서 데이터를 변경하지 않음
- 이 경우에는 캐시를 사용할 수 있을 것 같은데...?
- 단, 클라이언트의 데이터와 서버의 데이터가 같은지 검증이 필요함.
- 검증헤더가 필요해
3. 검증헤더, 조건 부 요청 : Last-Modified, If-modified_since
- 클라이언트의 요청에 대한 응답으로
- 서버에서 응답을 줄 때 Last-Modified: 2021년 08월 04일 22:00:00 과 같이 마지막으로 수정된 시각 전달 가능.
- 응답을 받은 브라우저는 응답 결과를 캐시에 저장하며, 유효 기간 및 최종 수정 일을 같이 저장함.
- 만약 이 상태에서 캐시 시간 초과된 이후에 재 요청을 한다면..?
- 서버에서 데이터 변경이 있는 지 확인하기 위해 아래와 같이 요청을 보낸다.
(캐시에 Last-Modified가 있는 경우)
GET /star.jpg
if-modified-since: 2021년 08월 04일 22:00:00 - 서버는 요청을 받고 해당 데이터의 최종 검증일과 비교&판단함
- 변경되지 않은 경우에 아래와 같이 서버에서 응답 메시지를 보냄
HTTP/1.1 304 Not Modified
Content-Type: image/jpeg
cache-control: max-age=60
Last-Modified: 2021년 08월 04일 22:00:00
Content-Length: 34012 - 이 때 HTTP Body가 없음!!! 서버측에서는 헤더만 보냄
- 클라이언트는 응답 결과를 재사용, 헤더 데이터 갱신함.
4. 정리
- 검증 헤더 : Last-Modified
- 조건 부 요청 : If-modified_since
- 캐시 유효 시간이 초과해도, 서버의 데이터가 갱신되지 않았으면
- 서버는 304 Not Modified와 헤더 메타 정보만 보냄, body는 없음
- 클라이언트는 서버가 보낸 응답 헤더 정보로 캐시의 메타 정보를 갱신
- 클라이언트는 캐시에 저장되어 있는 데이터 재사용
'인프런 > [인프런]모든 개발자를 위한 HTTP 웹 기본 지식' 카테고리의 다른 글
캐시와 조건부 요청 헤더 (0) | 2021.08.04 |
---|---|
검증 헤더와 조건 부 요청 2 (0) | 2021.08.04 |
Header - 캐시 기본 동작 (0) | 2021.08.04 |
Header - 쿠키 (0) | 2021.08.04 |
Header - 인증 (0) | 2021.08.03 |
Comments