Cache-Control 확실한 캐시 무효화 응답
- Cache-Control: no-cache, no-store, must-revalidate
- Pragma: no-cache
- HTTP 1.0 하위 호환
만약 이 페이지가 캐시가 되면 안된다 하시면 위에 것을 넣어주시면 됩니다.
확실히 캐시를 우회하려면, Cache-Control: no-cache, no-store, must-revalidate를 넣어주셔야합니다.
그 다음에 HTTP 1.0에서 혹시 뭔 요청이 온다면 Pragma: no-cache를 넣어주시면 됩니다.
예) 사용자의 통장 장고
Cache-Control 캐시 지시어(directives) - 확실한 캐시 무효화
- Cache-Control: no-cache
- 데이터는 캐시해도 되지만, 항상 원 서버에 검증하고 사용(이름에 주의)
- Cache-Control: no-store
- 데이터에 민감한 정보가 있으므로 저장하면 안됨(메모리에서 사용하고 최대한 빨리 삭제)
- Cache-Control: must-revalidate
- 캐시 만료후 최초 조회시 원 서버에 검증해야함
- 원 서버 접근 실패시 반드시 오류가 발생해야함 - 504(Gateway Timeout)
- must-revalidate는 캐시 유효 시간이라면 캐시를 사용함
- Pragma: no-cache
- HTTP 1.0 하위 호환
no-cache는 예를 들어서 ETag 같은걸로 문구를 들어가게하죠. 그러면 프록시 캐시 서버로 갑니다. 프록시 캐시에서 no-cache가 왔으니 내가 처리하면 안되네 이러고 원 서버에 요청합니다. 그러면 원 서버가 검증을 하겠죠.
그리고 이제 정상적으로 응답을 해줍니다.
일단 아까전처럼 no-cache로 보냈어요. 그러면 프록시 캐시 서버가 이거 no-cache네 그러면 원 서버에 요청을 보내야겠죠. 그런데 만약에, 순간적으로 네트워크가 단절이 되어서 원 서버에 접근이 불가가 되었습니다. 그럴 때는, 장애가 나더라도 예전 상태라도 보여주자 이렇게 설정을 할 수 있는데 이게 no-cache의 정책입니다.
그런데 must-revalidate는 뭐냐면 위에 있는 옵션이 들어가면, 프록시 캐시에 들어와요. 그런데 프록시 캐시가 이거 내가 처리하면 안되네 다른 서버에 보내려는데 순간 네트워크가 단절이 되어서 원 서버에 접근이 불가능해요 이 경우에는 504 Gateway Timeout을 내보냅니다.
'HTTP 웹 지식' 카테고리의 다른 글
HTTP 메서드 활용1(클라이언트에서 서버로 데이터 전송2) (0) | 2022.01.28 |
---|---|
HTTP 헤더2 - 캐시와 조건부 요청 헤더 (0) | 2022.01.28 |
HTTP 웹 지식HTTP 일반 헤더1-일반 헤더(쿠키2) (0) | 2022.01.27 |
HTTP 헤더2 - 캐시와 조건부 요청(프록시 캐시) (0) | 2022.01.24 |
HTTP 헤더2 - 캐시와 조건부 요청(검증 헤더와 조건부 요청2) (0) | 2022.01.24 |