Respostas:
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 dos dados Expires
é uma data HTTP, enquanto Cache-Control
max-age permite especificar uma quantidade relativa de tempo para que você possa especificar "X horas após a solicitação da página".
O controle de cache em HTML é uma pergunta muito semelhante e possui um bom link para um tutorial de armazenamento em cache que deve responder à maioria das suas perguntas (por exemplo, http://www.mnot.net/cache_docs/#EXPIRES ). Em resumo, Expires
é recomendado para recursos estáticos, como imagens, e Cache-Control
quando você precisar de mais controle sobre como o cache é feito.
Se você estiver usando uma CDN (Cloud Delivery Network), recomendo usar o Cache-Control com um tempo máximo de duração em segundos. Por exemplo, Controle de cache: max-age = 604800. Isso evita picos de solicitação para o servidor de origem: com "Expira em quarta-feira, 30 de outubro de 20xx 04:37:07 GMT", todos os navegadores solicitarão você ao mesmo tempo.
cache-control
. Então, eu não vejo por que haveria pedidos picos quando se utilizaExpires:
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, Expira) usados para definir políticas de cache de resposta. Todos os navegadores modernos suportam o Controle de cache, portanto, é tudo o que precisamos.
O Controle de cache foi definido no HTTP / 1.1, informa todos os mecanismos de cache do servidor para o cliente se eles podem armazenar em cache esse objeto. Ele é medido em segundos: Cache-Control: max-age=3600
.
O Expires
campo do cabeçalho fornece a data / hora após a qual a resposta é considerada obsoleta. O valor Expira é um timestamp HTTP-date: Expires: Tue, 18 Jul 2017 16:07:23 GMT
.
Se uma resposta incluir um Cache-Control
campo com a max-age
diretiva, o destinatário DEVE ignorar o Expires
campo.
O Heroku devcenter tem um excelente artigo sobre este assunto.
Citando isso,
Enquanto o cabeçalho Cache-Control ativa o cache do lado do cliente e define a idade máxima de um recurso, o cabeçalho Expira é usado para especificar um momento específico em que o recurso não é mais válido.
Exceto pelas opções públicas / privadas do CC, não vejo diferença. Ao usar o Expira como "acesso mais 1 ano / mês / semana / dia", ele funciona exatamente da mesma maneira que o CC.
Se você ainda estiver interessado, deixo essa recomendação diretamente dos meninos do google. https://developers.google.com/speed/docs/insights/LeverageBrowserCaching Eles preferem expirar antes do que o controle de cache