Estou usando o plug-in "Velocidade da página" do Google para o Firefox para acessar meu site.
Alguns dos componentes da minha página são indicados como status HTTP:
200 200 (cache) 304
Pelo "Page Speed" do Google.
O que me deixa confuso é a diferença entre 200 (cache) e 304.
Atualizei a página várias vezes (mas não limpei meu cache) e sempre parece que meu favicon.ico e algumas imagens têm status = 200 (cache) enquanto outras imagens têm status http 304.
Eu não entendo por que a diferença.
ATUALIZAÇÃO :
Usando o Google "Page Speed", recebo um "200 (cache)" para http://example.com/favicon.ico e http://cdn.example.com/js/ga.js
Porém, recebo o status http "304" em http://cdn.example.com/js/combined.min.js
Não entendo por que tenho dois arquivos JavaScript localizados no mesmo diretório / js /, um retornando um status http 304 e o outro retornando um código de status 200 (cache).
max-age
eage
combinados também podem resultar em 200 resultados (cache) seage
for menor quemax-age
. A única exceção é quando o usuário clica no botão de atualização do navegador; nesse caso, um cabeçalho 304 é enviado.href
,url,
esrc
referências a cada arquivo para incluir uma 'impressão digital' (um hash do arquivo ou um número incrementado simples), e depois dizer ao servidor retirar essa impressão digital e apenas servirstyle.css
ou o que quer. Se você não puder fazer isso no servidor, faça com que seu sistema de criação renomeie os arquivos reais com a impressão digital.200 (cache) significa que o Firefox está simplesmente usando a versão em cache localmente. Este é o mais rápido porque não é feita nenhuma solicitação ao servidor da Web.
304 significa que o Firefox está enviando uma solicitação condicional "If-Modified-Since" para o servidor Web. Se o arquivo não tiver sido atualizado desde a data de envio pelo navegador, o servidor da Web retornará uma resposta 304 que basicamente instrui o Firefox a usar sua versão em cache. Não é tão rápido quanto 200 (cache) porque a solicitação ainda é enviada ao servidor da Web, mas o servidor não precisa enviar o conteúdo do arquivo.
Para sua última pergunta, não sei por que os dois arquivos JavaScript no mesmo diretório estão retornando resultados diferentes.
fonte
Isso me jogou por um longo tempo também. A primeira coisa que eu verificaria é que você não está recarregando a página clicando no botão Atualizar, que sempre emitirá uma solicitação condicional de recursos e retornará 304s para muitos dos elementos da página. Em vez disso, vá até a barra de URL, selecione a página e pressione Enter como se você tivesse digitado o mesmo URL novamente, o que lhe dará um melhor indicador do que está sendo armazenado em cache corretamente. Este artigo faz um ótimo trabalho explicando a diferença entre solicitações condicionais e incondicionais e como o botão de atualização as afeta: http://blogs.msdn.com/b/ieinternals/archive/2010/07/08/technical-information-about- condicional-http-pedidos-e-a-atualização-button.aspx
fonte
HTTP 304 "não foi modificado". Seu servidor da web basicamente diz ao navegador "esse arquivo não foi alterado desde a última vez em que você o solicitou". Enquanto um HTTP 200 está dizendo ao navegador "aqui está uma resposta bem-sucedida" - que deve ser retornada quando for a primeira vez que seu navegador estiver acessando o arquivo ou a primeira vez que uma cópia modificada estiver sendo acessada.
Para mais informações sobre códigos de status, consulte http://en.wikipedia.org/wiki/List_of_HTTP_status_codes .
fonte
Para sua última pergunta, por quê? Vou tentar explicar com o que sei
Uma breve explicação desses três códigos de status em termos leigos.
Se o armazenamento em cache estiver ativado no servidor
Para alguns arquivos, o navegador está decidindo solicitar do servidor e, para alguns, está lendo os arquivos armazenados (armazenados em cache). Por que é isso ? Todos os arquivos têm uma data de validade, então
Se um arquivo não expirar, o navegador usará do cache (200 cache).
Se o arquivo expirar, o navegador solicitará o servidor para um arquivo. Arquivo de verificação do servidor nos dois locais (navegador e servidor). Se o mesmo arquivo for encontrado, o servidor recusará a solicitação. Conforme o navegador de protocolo, usa o arquivo existente.
olhe para esta configuração nginx
Aqui a expiração é definida como 60 segundos, para que todos os arquivos estáticos sejam armazenados em cache por 60 segundos. Portanto, se você solicitar um arquivo novamente dentro de 60 segundos, o navegador lerá da memória (200 de memória). Se você solicitar após 60 segundos, o navegador solicitará o servidor (304).
Supus que o arquivo não fosse alterado após 60 segundos; nesse caso, você obteria 200 (ou seja, o arquivo atualizado será buscado no servidor).
Portanto, se os servidores estiverem configurados com diferentes cabeçalhos (políticas) de vencimento e armazenamento em cache, o status poderá ser diferente.
No seu caso, você está usando o cdn, o principal objetivo do cdn é a alta disponibilidade e a entrega rápida. Portanto, eles usam vários servidores. Embora pareça que os arquivos estejam no mesmo diretório, o cdn pode usar vários servidores para fornecer conteúdo, se esses servidores tiverem configurações diferentes. Então esses status podem mudar. Espero que ajude.
fonte