캐시에 오래된 항목이 있을 경우, 캐시는 먼저 오리진 서버(또는 새로운 응답이 있는 중간 캐시)를 통해 캐시된 항목이 여전히 사용 가능한지 확인해야 합니다. 를 캐시 항목의 "validating"
이라고 합니다.
HTTP/1.1 프로토콜은 조건부 메서드의 사용을 지원합니다.
조건부 방법을 지원하기 위한 주요 프로토콜 기능은 "cache validators"
와 관련되어 있다.
오리진 서버가 전체 응답을 생성할 때, 캐시 항목과 함께 보관되는 일종의 “validator
”를 첨부합니다. 클라이언트(사용자 에이전트 또는 프록시 캐시)가 캐시 항목이 있는 리소스에 대해 조건부 요청을 하면 해당 요청에 연관된 validator
가 포함됩니다.
그런 다음 서버는 해당 validator
를 엔티티의 현재 검사기와 비교하여 검사하고, 일치하는 경우(섹션 13.3.3 참조), 엔티티 본문이 아닌 특수 상태 코드(일반적으로 304(수정되지 않음)로 응답합니다. 그렇지 않으면 전체 응답(엔티티 본문 포함)을 반환합니다. 따라서 검증자가 일치하면 전체 응답을 전송하지 않고 일치하지 않으면 추가 왕복 이동을 피한다.
Last-Modified Dates
마지막으로 수정된 엔티티 헤더 필드 값은 종종 캐시 검사기로 사용됩니다. 간단히 말해서 캐시 항목은 마지막 수정 값 이후 엔티티가 수정되지 않은 경우 유효한 것으로 간주됩니다.
Entity Tag Cache Validators
Weak and Strong Validators
strong validator
: 일반적으로 어떤 방식으로든 실체(실체-본체 또는 어떤 실체-헤더)가 변경되면 검증자도 변경, changed when bits of an entity changes
weak validator
: 리소스가 변경될 때 항상 변경되지 않는 검증자, changed when meaning of an entity changes.
강력한 검증자의 한 예로 엔티티가 변경될 때마다 안정적인 저장소에서 증가하는 정수를 들 수 있습니다. 1초 분해능으로 표시되는 기업의 수정 시간은 자원이 1초 동안 두 번 수정될 수 있기 때문에 약한 검증자가 될 수 있다.
강력한 비교 함수: 동일한 것으로 간주되기 위해서는 두 검증자가 모든 면에서 동일해야 하며, 두 검증자가 모두 약해서는 안 됩니다.
약한 비교 함수: 동등하게 간주되기 위해서는 두 검증자가 모든 면에서 동일해야 하지만둘 중 하나 또는 둘 다 결과에 영향을 주지 않고 "약한" 태그가 붙을 수 있다.