web-dev-qa-db-pt.com

qual é a diferença entre os cabeçalhos Expires e Cache-Control?

Qual é a diferença entre os cabeçalhos Expires e Cache-Control?

164
poorani

Cache-Control foi introduzido no HTTP/1.1 e oferece mais opções que Expires. Eles podem ser usados ​​para realizar a mesma coisa, mas o valor de dados para Expires é uma data HTTP, enquanto Cache-Control max-age permite que você especifique uma quantidade relativa de tempo para que você possa especificar "X horas após a solicitação da página".

HTML Cache control é uma questão muito semelhante e tem um bom link para um tutorial de cache que deve responder a maioria das suas perguntas (por exemplo, http://www.mnot.net/cache_docs/ #EXPIRES ). Para resumir, Expires é recomendado para recursos estáticos como imagens e Cache-Control quando você precisa de mais controle sobre como o cache é feito.

119
A Lee

Se você estiver usando um CDN (Cloud Delivery Network), recomendo usar o Cache-Control com um tempo máximo em segundos. Por exemplo, Cache-Control: max-age = 604800. Isso evita picos de solicitação em seu servidor Origin: Com "Expira em Qua, 30 de outubro de 20xx 04:37:07 GMT", todos os navegadores irão solicitá-lo ao mesmo tempo.

32
user3241258

De acordo com este artigo do Google Developers, HTTP Caching :

O cabeçalho Cache-Control foi definido como parte da especificação HTTP/1.1 e substitui os cabeçalhos anteriores (por exemplo, Expires) usados ​​para definir as políticas de cache de resposta. Todos os navegadores modernos suportam Cache-Control, por isso é tudo o que precisamos.

16
Paul

Heroku devcenter tem um excelente artigo sobre este assunto.

Citando isso,

Enquanto o cabeçalho Cache-Control ativa o cache do cliente e define a duração máxima de um recurso, o cabeçalho Expires é usado para especificar um ponto específico no tempo em que o recurso não é mais válido.

4
Devi

O Cache-Control foi definido em HTTP/1.1, informa todos os mecanismos de cache do servidor para o cliente, se eles podem armazenar em cache esse objeto. É medido em segundos: Cache-Control: max-age=3600.

O campo de cabeçalho Expires fornece a data/hora após a qual a resposta é considerada obsoleta. O valor de Expires é um carimbo de data e hora de data HTTP: Expires: Tue, 18 Jul 2017 16:07:23 GMT.

Se uma resposta incluir um campo Cache-Control com a diretiva max-age, um destinatário DEVE ignorar o campo Expires.

4
nodejh

Se você ainda está interessado, deixo esta recomendação diretamente dos garotos do google. https://developers.google.com/speed/docs/insights/LeverageBrowserCaching Eles preferem Expires antes do que o Cache-Control

0
ray

Exceto pelas opções privadas/públicas do CC, não vejo nenhuma diferença. Ao usar Expira como "acesso mais 1 ano/mês/semana/dia", ele funciona exatamente da mesma maneira que o CC.

0
Rob