Para su última pregunta, ¿por qué? Trataré de explicar con lo que sé
Una breve explicación de esos tres códigos de estado en términos simples.
- 200 - éxito (solicitudes del navegador y obtener el archivo del servidor)
Si el almacenamiento en caché está habilitado en el servidor
- 200 (de la memoria caché): archivo encontrado en el navegador, por lo que el navegador no va a solicitarlo del servidor
- 304: el navegador solicita un archivo pero el servidor lo rechaza
Para algunos archivos, el navegador decide solicitar del servidor y para algunos decide leer de los archivos almacenados (en caché). Por qué es esto ? Todos los archivos tienen una fecha de caducidad, así que
Si un archivo no caduca, el navegador lo usará desde la caché (200 caché).
Si el archivo ha caducado, el navegador solicita al servidor un archivo. Archivo de verificación del servidor en ambos lugares (navegador y servidor). Si se encuentra el mismo archivo, el servidor rechaza la solicitud. Según el protocolo, el navegador utiliza el archivo existente.
mira esta configuración nginx
location / {
add_header Cache-Control must-revalidate;
expires 60;
etag on;
...
}
Aquí la caducidad se establece en 60 segundos, por lo que todos los archivos estáticos se almacenan en caché durante 60 segundos. Entonces, si solicita un archivo nuevamente dentro de los 60 segundos, el navegador leerá de la memoria (200 de memoria). Si solicita después de 60 segundos, el navegador solicitará el servidor (304).
Supuse que el archivo no cambia después de 60 segundos, en ese caso obtendría 200 (es decir, el archivo actualizado se obtendrá del servidor).
Por lo tanto, si los servidores están configurados con diferentes encabezados (políticas) que expiran y almacenan en caché, el estado puede diferir.
En su caso, está utilizando cdn, el objetivo principal de cdn es la alta disponibilidad y la entrega rápida. Por lo tanto, usan múltiples servidores. Aunque parece que los archivos están en el mismo directorio, cdn podría usar múltiples servidores para proporcionar contenido, si esos servidores tienen configuraciones diferentes. Entonces estos estados pueden cambiar. Espero eso ayude.