Server-Specified Expiration
HTTP 캐싱은 캐시가 오리진 서버에 대한 요청을 전혀 하지 않을 때 가장 잘 작동합니다. 요청을 피하기 위한 주요 메커니즘은 오리진 서버가 명시적인 만료 시간을 제공하는 것이며, 이는 후속 요청을 충족하기 위해 응답을 사용할 수 있음을 나타냅니다. 즉, 캐시는 서버에 먼저 연결하지 않고도 새로운 응답을 반환할 수 있습니다.
만료 메커니즘은 캐시에서 가져온 응답에만 적용되며 요청 클라이언트로 즉시 전달되는 직접적인 응답에는 적용되지 않습니다.
오리진 서버가 HTTP/1.1 캐시를 구성 방법에 관계없이 강제로 적용하려는 경우, 모든 요청을 검증하기 위해 "must-revalidate
" 캐시 제어 명령어를 사용해야 합니다(섹션 14.9)
서버는 만료 헤더 또는 Cache-Control 헤더의 최대 사용 기간 지시어를 사용하여 명시적 만료 시간을 지정합니다.
Heuristic Expiration
원본 서버가 항상 명시적인 만료 시간을 제공하지 않기 때문에 HTTP 캐시는 일반적으로 경험적 만료 시간을 할당하며, 그럴듯한 만료 시간을 추정하기 위해 다른 헤더 값(예: 마지막 수정 시간)을 사용하는 알고리즘을 사용한다
리스틱 만료 시간은 의미적 투명성을 손상시킬 수 있으므로 신중하게 사용해야 하며, 오리진 서버가 가능한 한 명시적 만료 시간을 제공하도록 권장한다.
Age Calculations
캐시가 캐시된 항목이 fresh
한지 확인하기 위해서는 항목의 age
가 freshness lifetime
을 넘는지 확인해야한다.
우리는 13.2.4절에서 후자(freshness lifetime
= Expiration
)를 계산하는 방법에 대해 논의한다. 이 절에서는 응답 또는 캐시 항목의 age
를 계산하는 방법을 설명한다.
expires_value
: value of the Expires header
max_age_value
: 응답의 cache-control header
의 "max-age"
지시로 전달되는 시간(초)의 적절한 값
(섹션 14.9.3 참조)