캐시 무효화
cache-control
확실한 캐시 무효화 응답
-cache-contol : no-cache , no-store , must-revalidate
-progma : no-cache
HTTP/1.0 하위호환 (이것까지 넣어주어야 한다.)
캐시를 요청하지 안하도 HTTP가 알아서 요청하기도 한다.
캐시가 되어선 안될 데이터의 경우 위 (cache-contol : no-cache , no-store , must-revalidate , progma : no-cache) 헤드를 모두 넣어주어야 한다.
캐시 지시어(directives) - 확실한 캐시 무효화
(무조건 사용)
-cache-contol : no-cache
데이터는 캐시해도 되지만 항상 원서버에 검증하고 사용 (이름에 주의)
-cache-contol : no-store
데이터에 민감한 정보가 있으므로 저장하면 안됨
(메모리에서 사용하고 최대한 빨리 삭제)
-cache-contol:must-revalidate
캐시 만료후 최초 조회시 원서버에서 검증해야함.
원서버 접근 실패시 반드시 오류가 발생해야함 , 504(gateway - timeout)
must-recalidate 는 캐시 유효 시간이라면 캐시를 사용함
-progma : no-cache
HTTP/1.0 하위 호환
(no-cache는 브라우저가 검증하지 않고 원서버에 바로 요청한다.)
Must-revalidate vs no cache
1.웹 브라우저가 프록시 서버에 요청 no-cache , ETag
2. 프록시 서버가 원서버에 요청 no-cache , ETag
3. 프록시 서버에서의 요청을 원서버에서 검증
4. 서버에서 프록시 서버로 304 not Modified 응답
5. 프록시서버에서 웹브라우저로 304 not Modified 응답
서버가 no-cache에 대하여 응답 해주면 웹브라우에서 캐시를 사용
no-cache 사용불가 경우
1.웹 브라우저가 프록시 서버에 요청 no-cache , ETag
2.프록시 서버 원서버에 접근할 수 없는 경우
캐시 서버 설정에 따라서 캐시 데이터를 반환할 수 있음
3.오류를 반환하기 보다는 오리진 데이터라도 보려주기
(설정에 따라 , 오류 , 200 반환값 설정 가능)
Must-revalidate의 경우 (응답 물가시 무조건 오류 반환)
1.웹 브라우저가 프록시 서버에 요청 no-cache , ETag
2. 프록시서버가 순간적으로 원서버와 단절
원서버에 접근할수 없는 경우 , 항상 오류가 발생해야한다.
504 GateWay Timeout
(매우 중요한 돈과 관련된 결과로 생각할경우 아무값도 반환하지 않는게 보안적이다.)
'HTTP' 카테고리의 다른 글
3월 13일 프록시 캐시 (0) | 2023.03.13 |
---|---|
3월 13일 HTTP 캐시 조건부 헤더 (0) | 2023.03.13 |
3월 13일 HTTP 캐시 검증헤더와 조건부 요청2 (0) | 2023.03.13 |
3월 13일 HTTP 캐시 검증헤더와 조건부 요청1 (0) | 2023.03.13 |
3월 13일 HTTP 헤더2 (0) | 2023.03.13 |