일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- CS
- IT
- Effective Java
- 깃허브
- 알고리즘
- 신입사원
- spring
- 깃
- 이펙티브 자바
- 세마포어
- 컴퓨터과학
- 개발
- Public
- java
- 프로그래밍
- 신입
- 메모리
- 스터디
- 뮤텍스
- 우리카드
- 컴퓨터공학
- 스프링
- 공채
- github
- package-private
- OS
- 디지털
- 운영체제
- 정보처리기사
- 자바
Archives
- Today
- Total
주니어 개발자 성장기
(22.11.21) HTTP(8) - 헤더(4) 본문
캐시와 조건부 요청
프록시 캐시
- 원서버와 직접 통신하는 경우 시간이 오래걸리기 때문에 프록시 캐시 서버를 통해서 자주 전송하는 데이터들을 캐싱해놓는다.
- private 캐시: 웹브라우저에서 사용하는 캐시
- public 캐시: 프록시 캐시 서버에서 사용하는 공용 캐시
캐시 지시어(directives) - 기타
- Cache-Control: public
- 응답이 public 캐시에 저장되어도 됨
- Cache-Control: private
- 응답이 해당 사용자만을 위한 것임, private 캐시에 저장해야 함(기본 값)
- Cache-Control: s-maxage
- 프록시 캐시에만 적용되는 max-age
- Age: 60(HTTP 헤더)
- 오리진 서버에서 응답 후 프록시 캐시내에 머문 시간(초)
캐시 무효화
Cache-Control
확실한 캐시 무효화 응답
- 캐시를 웹브라우저가 임의로 하는 경우도 있기 때문에, 캐시를 하면 안되는 정보를 캐시하지 않기 위해서
아래의 헤더를 모두 넣으면 확실히 대응이 된다. - Cacge-Control: no-cache, no-store, must-revalidate
- Pragma: no-cache
- HTTP 1.0 하위 호환
Chache-Control: must-revalidate
- 캐시 만료 후 최초 조회시 원 서버에 검증해야함
- 캐시 유효시간이라면 캐시를 사용한다.
- no-cache도 원 서버에 검증하는 것이 원칙이다.
기능이 같아 보이는데 둘 다 써야하는 이유는?
- no-cache의 경우 네트워크 단절 등의 이유로 Origin 서버와 통신이 불가능 할 때 캐시 서버 설정에 따라 캐시 서버에 있는 캐시 데이터(오래 되었을 수도 있는 데이터)를 보낼 가능성이 있다.
- must-revalidate는 원 서버에 접근 실패하면 반드시 오류를 내도록 한다 504(Gateway Timeout)
- 캐시를 하면 안되는 데이터이기 때문에, 원 서버 접근 실패 시 무조건 오류를 내는 것이 좋다.
'Web' 카테고리의 다른 글
(22.11.21) HTTP(7) - 헤더(3) (0) | 2022.11.21 |
---|---|
(22.11.14) HTTP(6) - 헤더(2) (0) | 2022.11.14 |
(22.11.14) HTTP(6) - 헤더(1) (0) | 2022.11.14 |
(22.10.29)HTTP(5) - 상태코드 (0) | 2022.10.29 |
(22.10.26) HTTP(3) - 메서드 활용 (0) | 2022.10.27 |