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.
- 200 - sucesso (solicitações do navegador e obter arquivos do servidor)
Se o armazenamento em cache estiver ativado no servidor
- 200 (do cache de memória) - arquivo encontrado no navegador, para que o navegador não seja solicitado pelo servidor
- 304 - o navegador solicita um arquivo, mas ele é rejeitado pelo 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
location / {
add_header Cache-Control must-revalidate;
expires 60;
etag on;
...
}
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.