이미 저장된 응답을 사용해야 하는 요청을 위해 HTTP는 Cache-Control: only-if-cached를 정의합니다.

클라이언트는 HTTP 캐싱 프록시를 통해 이를 보낼 수 있습니다:

curl --proxy http://127.0.0.1:3128 \
  --header 'Cache-Control: only-if-cached' \
  --include http://www.example.org/report

이 지시문을 존중하는 캐시는 요청의 다른 제약과 일치하는 저장된 응답을 반환해야 하며, 요청을 충족할 수 없을 때는 504 Gateway Timeout을 반환해야 합니다. 여기서 504는 프록시로의 TCP 연결 실패가 아니라 캐시 정책을 나타낼 수 있습니다.

이 지시문이 오래된 콘텐츠를 자동으로 허용하는 것은 아닙니다. 신선도, 검증 요구 사항, 그리고 일치하는 Vary 필드는 여전히 중요합니다. no-cache 요청 지시문은 대신 재사용 전에 원본에서의 성공적인 검증을 요구할 수 있습니다.

이는 캐시의 오프라인 검증 모드를 설정하는 것과도 다릅니다. only-if-cached는 개별 요청에 실려 클라이언트가 무엇을 받아들일 의사가 있는지를 나타냅니다.

이 동작을 지원하는 캐시를 사용하세요. 무시된 요청 지시문은 방화벽이 아니므로, 업스트림 트래픽을 엄격히 막으려면 독립적으로 적용되는 네트워크 또는 서버 정책이 필요합니다.

일반적인 HTTPS CONNECT 프록시는 암호화된 HTTP 헤더를 보지 못하고 그 터널에서 페이지 객체를 보관하지도 않습니다. 예제는 캐시가 처리할 수 있는 평문 HTTP 리소스를 의도적으로 사용합니다.

관련 글