Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
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
Tags
more
Archives
Today
Total
관리 메뉴

공부일지

HTTP 헤더 - 2 본문

Spring

HTTP 헤더 - 2

알라알리야 2023. 2. 26. 23:03

캐시와 조건부 요청

캐시가 있으면 캐시 가능 시간동안 네트워크를 사용하지 않아도 되어서 로딩 속도가 빨라지고 네트워크 사용량을 줄일 수 있다.

 

 

검증 헤더 + 조건부 요청 ( Last - Modified ) + ( If - Modified - Since, If - Unmodified - Since )

  1. 서버에 저장되어 있는 Last - Modified (데이터가 마지막에 수정된 시간) 를 웹 브라우저 캐시에 저장
  2. 캐시 시간이 초과되면 서버에 If - Modified - Since가 같은지를 조건부로 요청
  3. Last - Modified 가 같으면 HTTP 바디 를 빼고 HTTP 헤더만 304 Not Modified 상태로 전송 (용량 작음)
  4. 다르면 HTTP 바디 + 헤더를 200 OK 상태로 전송

검증 헤더 + 조건부 요청 ( E-Tag ) + ( If - None - Match, If - Match )

  1. 서버에 저장되어 있는 E-Tag (해시 값) 를 웹 브라우저 캐시에 저장
  2. 캐시 시간이 초과되면 서버에 If - None - Match 로 해시 값이 같은지를 조건부로 요청
  3. E - Tag가 같으면 HTTP 바디 를 빼고 HTTP 헤더만 304 Not Modified 상태로 전송
  4. 다르면 HTTP 바디 + 헤더를 200 OK 상태로 전송

 

Cache - Control

  • max - age : 캐시 유효 시간
  • no - cache : 데이터는 캐시해도 되지만, 항상 원(origin) 서버에 검증하고 사용
  • no - store : 데이터에 민감한 정보가 있으므로 저장하면 안됨

HTTP 1.0 하위 호환 (현재는 Cache - Control을 사용)

Pragma - 캐시 제어

Expires - 캐시 만료일을 정확한 날짜로 지정

 

 

프록시 캐시

웹 브라우저에서 캐시를 다운 받으려면 원 서버에서 다운을 받아야 한다.

원서버에서 받으면 속도가 느리기 때문에 중간에 프록시 캐시 서버가 원 서버의 캐시를 받고 웹 브라우저에 뿌린다.

 

 

확실한 캐시 무효화

  • Cache - Control : no - cache
  • Cache - Control : no - store
  • Cache - Control : must - revalidate (원 서버에 접근할 수 없는 경우 200 OK를 반환하지 않고 항상 504 오류를 발생시킨다)
  • Pragma : no - cache (HTTP 1.0 하위 호환까지 무효화 하기 위함)

위의 명령어들이 모두 있어야 한다.

'Spring' 카테고리의 다른 글

Lombok의 ArgsConstructor 종류  (3) 2023.05.21
싱글톤 패턴, 리펙토링, DI  (0) 2023.03.04
HTTP 헤더 - 1  (0) 2023.02.26
HTTP 상태 코드  (0) 2023.02.25
HTTP 메서드 활용  (0) 2023.02.23
Comments