-
HTTP(7) - HTTP 헤더 (캐시 제어 헤더, 프록시 캐시, 캐시 무효화)스프링/HTTP 기본 지식 2023. 2. 7. 14:16
캐시 제어 헤더
1. Cache-Control : 캐시 제어
2. Pragma : 캐시 제어(하위 호환)
3. Expires : 캐시 유효 기간(하위 호환)
1. Cache-Control
Cache-Control: max-age
- 캐시 유효시간, 초 단위
Cache-Control: no-cache
- 데이터는 캐시해도 되지만, 항상 원 서버에 검증하고 사용 (if-none-modified 등을 통해 항상 검증을 먼저 해야함)
Cache-Control: no-store
- 데이터에 민감함 정보가 있으므로 저장하면 안됨 (메모리에서 사용하고 최대한 빨리 삭제)
2. Pragma
Pragma: no-cache처럼 사용하는데 거의 사용하지 않음
3. Expires
expires: Mon, 01 Jan 1990 00:00:00 GMT
- 캐시 만료일을 정확한 날짜로 지정
- 하지만 초단위로 계산하는 Cache-Control: max-age를 권장해서 지금은 Expires를 거의 사용하지 않음
프록시 캐시
원 서버 직접 접근 - 미국의 원 서버를 직접 접근하려면 너무 오랜 시간이 걸린다
프록시 캐시 도입
한국 어딘가에 프록시 캐시 서버를 넣어놓고 미국에 있는 원 서버에 직접 접근이 아니라 프록시 캐시 서버를 통해 접근하도록 한다.
캐시를 만드는데 개인 웹 브라우저가 아니라 한국이 공통으로 사용하는 public한 공통 캐시를 만들어서 거기에 접근하도록 한다.
캐시 지시어
Cache-Control: public
- 응답이 public 캐시에 저장되어도 됨
Cache-Control: private
- 응답이 해당 사용자만을 위한 것임, private 캐시에 저장해야 함
Cache-Control: s-maxage
- 프록시 캐시에만 적용되는 max-age
캐시 무효화
Cache-Control : 확실한 캐시 무효화 응답
캐시 요청을 안해도 웹 브라우저가 임의로 캐시를 해버릴 수도 있다.
캐시를 하면 안되는 페이지가 있으면
Cache-Control: no-cache, no-store, must-revalidate를 넣어줘야한다.
1. Cache-Control: no-cache
- 데이터는 캐시해도 되지만 항상 원 서버에 검증하고 사용
2. Cache-Control: no-store
- 데이터에 민감한 정보가 있으므로 저장하지 말고 메모리에서 사용하고 최대한 빨리 삭제
3. Cache-Control: must-revalidate
- 캐시 만료후 최초 조회시 원 서버에 검증해야함
- 원 서버 접근 실패시 반드시 오류가 발생함 - 504(Gateway Timeout)
'스프링 > HTTP 기본 지식' 카테고리의 다른 글
HTTP(7) - HTTP 헤더 (캐시 검증헤더와 조건부 요청) (0) 2023.02.07 HTTP(6) - HTTP 헤더 (정보 및 쿠키) (0) 2023.02.07 HTTP(5) - HTTP 헤더 (표현헤더, 협상, 전송 방식) (0) 2023.02.07 HTTP(4) - HTTP 상태코드 (0) 2023.02.06 HTTP(3) - API 설계 예 (0) 2023.02.05