Cache-Control 속성이 요청 헤더 (클라이언트에서 서버로)로 전송되는 이유는 무엇입니까?


163

Cache-ControlHTTP 헤더 의 필드에 대해 읽은 후

나는 이해 Cache-ControlHTTP 응답 헤더 (클라이언트 서버) 필드가 다른 값을 전송하여 응답을 처리하는 방법에 대한 중간 프록시 서버 / 클라이언트 브라우저에 대한 지침을 지정 Cache-Control필드 : private, public, no-cache, 또는 no-store응답 헤더입니다.

그러나 왜 Cache-Control요청 헤더 (클라이언트에서 서버로)로 속성 을 보내야 합니까?

답변:


137

Cache-Control: no-cache일반적으로 요청 프록시 (웹 브라우저에서 서버로 전송)에서 사용되어 중간 프록시의 리소스를 강제로 검증합니다. 클라이언트가이 요청을 서버에 보내지 않으면 중간 프록시는 내용이 최신 인 경우 ( Expire또는 max-age필드 에 따라 만료되지 않은 경우) 컨텐츠의 사본을 리턴합니다 . Cache-Control이 프록시가 사본이 신선하더라도 사본을 다시 확인하도록 지시합니다.


8
여기에 너무 늦을 수도 있지만 다른 용도는 무엇입니까? 최대 연령 필드가 어떤 목적으로 사용됩니까?
Sam

현대 브라우저가 왜 이런 경향이 있습니까? 웹 표준에 따라 동작하더라도 중간 프록시를 신뢰하지 않습니까?
rogerdpack

1
어떤 @rogerdpack, 그들은 때문에 그들이 그 그들이 헤더를 보낼 수 있도록, 그들을 신뢰 신뢰 가 가장 사용이 필요한 것보다 더 큰 신선함을 필요로하는 몇 가지 특별한 이유가 있음을 표시하기 위해 영광 될 것입니다.
Jon Hanna

1
@ rogerdpack 당신이 방금 상태를 변경하고 그것을 반영하기를 원하는 것을했다면 고전적인 사례가 될 것입니다.
Jon Hanna

8
@JonHanna Chrome 개발자 도구에서 '캐시 사용 중지'를 선택했을 수 있습니다. : D
Gregory Magarshak

15

클라이언트는 Cache-Control요청 경로를 따라 원본 서버 및 모든 중간 프록시 서버에서 유효성 다시 확인과 같은 특정 캐싱 동작을 요청하기 위해 요청에 헤더를 보낼 수 있습니다 .


4

위의 답변 외에도
캐시 체인이 구현되는 설정이있을 수 있습니다. 이 경우 요청이 충족되지 않은 첫 번째 캐시에 도달하면 추가 체인 캐시로 이동할 수 있습니다.

따라서 서버에서 항상 응답을 얻으려면 요청 헤더에 캐시 제어를 포함시킵니다. 이렇게하면 항상 서버에서 응답을받을 수 있습니다.


"따라서 서버에서 항상 응답을 받으려면 요청 헤더에 캐시 제어가 포함됩니다. 이렇게하면 항상 서버에서 응답을받을 수 있습니다." 이 헤더의 어떤 가치가 그것을 달성 할 것입니까?
돈 해치

Cache-Control: no-cache프록시가 응답의 모든 유효성을 검사하도록 지시합니다.
mogsie
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.