Eu li sobre o cabeçalho do Pragma na Wikipedia, que diz:
"O campo Pragma: no-cache header é um cabeçalho HTTP / 1.0 destinado a ser usado em solicitações. É um meio para o navegador informar ao servidor e todos os caches intermediários que deseja uma versão nova do recurso, não para o servidor para informar ao navegador para não armazenar em cache o recurso. Alguns agentes do usuário prestam atenção a esse cabeçalho nas respostas, mas a RFC HTTP / 1.1 adverte especificamente contra a dependência desse comportamento. "
Mas eu não entendi o que faz? Qual é a diferença entre o Cache-Control
cabeçalho cujo valor é no-cache
e Pragma
cujo valor também é no-cache
?
fonte
Pragma: no-cache
destina-se a ser usado apenas em solicitações (significando "Quero o original, não uma cópia em cache") e seu comportamento não é especificado para respostas.Cache-Control: no-cache
tem o mesmo significado para solicitações, mas na verdade também é definido para respostas, significando "Se você deseja usar uma cópia em cache disso no futuro, primeiro verifique comigo se está atualizado (ou seja, execute a revalidação)".max-age
que não impede o armazenamento em cache. Ele apenas define uma data de expiração para ele ...Não há diferença, exceto que ela
Pragma
é definida apenas como aplicável às solicitações do cliente, enquanto queCache-Control
pode ser usada tanto pelas solicitações dos clientes quanto pelas respostas dos servidores.Portanto, no que diz respeito aos padrões, eles só podem ser comparados da perspectiva do cliente fazendo uma solicitação e do servidor recebendo uma solicitação do cliente. O http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.32 define o cenário da seguinte maneira:
Da maneira que eu leria o acima:
se você estiver escrevendo um cliente e precisar
no-cache
:Pragma: no-cache
em suas solicitações, pois você pode não saber seCache-Control
é suportado pelo servidor;Cache-Control
se você estiver escrevendo um servidor:
Cache-Control
; se não for encontrado, verifiquePragma: no-cache
e execute aCache-Control: no-cache
lógica;Cache-Control
.Obviamente, a realidade pode ser diferente do que está escrito ou implícito na RFC!
fonte
Cache-Control: max-age=86400
ePragma: no-cache
? Qual deles será homenageado pelos navegadores modernos?Pragma: no-cache
é definido apenas para solicitações do navegador e, portanto, seria totalmente inválido e indefinido nas respostas do servidor ao navegador; por exemplo, eu imagino que todos os navegadores (modernos ou not) deve ignorar esse cabeçalho em qualquer resposta que possa receber.Se for depois de 1999, e você ainda estiver usando Expires ou Pragma , estará fazendo errado.
Estou olhando para você Stackoverflow:
tl; dr:
Pragma
é um legado do HTTP / 1.0 e não é necessário desde o Internet Explorer 5 ou Netscape 4.7. A menos que você espere que alguns de seus usuários usem o IE5: é seguro parar de usá-lo.[date]
(descontinuado - HTTP 1.0)[seconds]
E os pedidos condicionais:
Etag: W/“1d2e7–1648e509289”
If-None-Match: W/“1d2e7–1648e509289”
304 Not Modified
last-modified: Thu, 09 May 2019 19:15:47 GMT
If-Modified-Since: Fri, 13 Jul 2018 10:49:23 GMT
304 Not Modified
última modificação: qui, 09 maio 2019 19:15:47 GMT
fonte
Pragma
nada. (Em HTTP / 1.0, Pragma foi definida como uma área extensível para directivas especificado-implementação para destinatários Esta especificação deprecates tais extensões para melhorar a interoperabilidade..)