Per la tua ultima domanda, perché? Proverò a spiegare con quello che so
Una breve spiegazione di questi tre codici di stato in parole povere.
- 200 - successo (richieste del browser e recupero del file dal server)
Se la memorizzazione nella cache è abilitata nel server
- 200 (dalla cache di memoria) - file trovato nel browser, quindi il browser non sta andando richiesta dal server
- 304 - il browser richiede un file ma viene rifiutato dal server
Per alcuni file il browser sta decidendo di richiedere dal server e per alcuni sta decidendo di leggere dai file memorizzati (memorizzati nella cache). Perchè è questo ? Ogni file ha una data di scadenza, quindi
Se un file non è scaduto, il browser utilizzerà dalla cache (200 cache).
Se il file è scaduto, il browser richiede il server per un file. File di controllo del server in entrambi i punti (browser e server). Se viene trovato lo stesso file, il server rifiuta la richiesta. Come da protocollo, il browser utilizza un file esistente.
guarda questa configurazione di nginx
location / {
add_header Cache-Control must-revalidate;
expires 60;
etag on;
...
}
Qui la scadenza è impostata su 60 secondi, quindi tutti i file statici vengono memorizzati nella cache per 60 secondi. Quindi, se richiedi di nuovo un file entro 60 secondi, il browser leggerà dalla memoria (200 memorie). Se lo richiedi dopo 60 secondi, il browser richiederà il server (304).
Presumo che il file non venga modificato dopo 60 secondi, in tal caso si otterrebbero 200 (ovvero, il file aggiornato verrà recuperato dal server).
Pertanto, se i server sono configurati con diverse intestazioni (criteri) in scadenza e in cache, lo stato potrebbe essere diverso.
Nel tuo caso stai usando cdn, lo scopo principale di cdn è l'alta disponibilità e la consegna veloce. Pertanto utilizzano più server. Anche se sembra che i file si trovino nella stessa directory, cdn potrebbe utilizzare più server per fornire il contenuto, se tali server hanno configurazioni diverse. Quindi questi stati possono cambiare. Spero che sia d'aiuto.