Por que o atributo Cache-Control é enviado no cabeçalho da solicitação (cliente para servidor)?

163

Depois de ler sobre o Cache-Controlcampo do cabeçalho HTTP,

Entendo que o Cache-Controlcampo no cabeçalho de resposta HTTP (servidor para cliente) especifica as diretrizes para o navegador de servidores proxy intermédios / cliente sobre a forma de lidar com a resposta, através do envio de diferentes valores para o Cache-Controlcampo: private, public, no-cache, ou no-storeno cabeçalho de resposta.

Mas não entendo por que precisamos enviar o Cache-Controlatributo no cabeçalho da solicitação (cliente para servidor)?

Aluna
fonte

Respostas:

137

Cache-Control: no-cachegeralmente é usado em um cabeçalho de solicitação (enviado do navegador da web para o servidor) para forçar a validação do recurso nos proxies intermediários. Se o cliente não enviar esta solicitação ao servidor, proxies intermediários irá retornar uma cópia do conteúdo se ele é fresco (não expirou de acordo com Expireou max-agecampos). Cache-Controldireciona esses proxies para revalidar a cópia, mesmo que seja nova.

David
fonte
8
Pode ser tarde demais aqui, mas, com exceção de quais são os outros usos? O campo de idade máxima é usado para qualquer finalidade?
Sam
Por que navegadores modernos tendem a fazer isso? Eles não confiam nos proxies intermediários, mesmo que estejam se comportando de acordo com os padrões da web?
Rogerdpack
1
@rogerdpack não, porque eles fazem a confiança deles, então eles enviar o cabeçalho que confiar serão homenageados para indicar que eles têm alguma razão especial para que requer uma maior frescura do que a maioria dos usos precisa.
Jon Hanna
1
@rogerdpack se você acabou de fazer algo que você sabe que mudou o estado e deseja refletir isso, seria um caso clássico.
Jon Hanna
7
@JonHanna Talvez você tenha "desabilitado o cache" marcado nas ferramentas de desenvolvedor do Chrome? : D
Gregory Magarshak
15

Um cliente pode enviar um Cache-Controlcabeçalho em uma solicitação para solicitar um comportamento específico de armazenamento em cache, como revalidação, do servidor de origem e de qualquer servidor proxy intermediário ao longo do caminho da solicitação.

bdash
fonte
4

Além da resposta acima,
pode haver uma configuração na qual o encadeamento de cache é implementado. Nesse caso, se a solicitação chegar ao primeiro cache, onde não for atendida, ela poderá ir para o cache encadeado adicional.

Assim, para obter sempre a resposta do servidor, incluímos controle de cache nos cabeçalhos das solicitações. Isso garantirá que a resposta seja sempre do servidor.

Loui
fonte
Você diz "Assim, para obter a resposta sempre do servidor, incluímos controle de cache nos cabeçalhos das solicitações. Isso garantirá que a resposta seja sempre do servidor". Que valor desse cabeçalho conseguiria isso?
Don escotilha
Cache-Control: no-cachedirá aos proxies para garantir que a resposta seja validada completamente.
mogsie