HTTP 304 Not Modified
Il validatore di cache: nulla è cambiato dall'ultima visita, continua a usare la copia che hai già.
Cosa significa HTTP 304
HTTP 304 Not Modified è la risposta a una richiesta condizionale. Il client dice “ho una copia di questa data” (If-Modified-Since) o “con questa impronta” (If-None-Match), e il server conferma che la copia è ancora attuale rispondendo 304 senza corpo.
Questo meccanismo — la rivalidazione della cache — è ciò che rende veloci i caricamenti ripetuti delle pagine: il browser riscarica solo ciò che è cambiato, e tutto il resto costa un solo piccolo round trip.
Cause comuni delle risposte 304
- Il browser ha rivalidato una pagina, uno script o un'immagine in cache e non era cambiato.
- Un edge CDN ha rivalidato il suo oggetto memorizzato rispetto all'origine.
- Un client API ha usato gli ETag per interrogare una risorsa a basso costo.
Buone pratiche per gli sviluppatori
- Servi header ETag o Last-Modified stabili così i client possono rivalidare.
- Non includere un corpo di risposta con 304 — il client ce l'ha già esplicitamente.
- Fai attenzione agli ETag che cambiano a ogni risposta (ad esempio da server con bilanciamento del carico e hash per nodo): disabilitano silenziosamente la rivalidazione.
Esempio di risposta
GET /styles.css HTTP/1.1 If-None-Match: "abc123" HTTP/1.1 304 Not Modified ETag: "abc123" Cache-Control: max-age=3600
Impatto SEO
Le risposte 304 sono positive per le prestazioni SEO: Googlebot usa molto le richieste condizionali, e una rivalidazione corretta gli permette di scansionare più del tuo sito a parità di budget. Validatori rotti costringono a un ridownload completo a ogni scansione.
FAQ
Una risposta 304 è un errore?
No — è un segnale di successo che significa che la tua copia in cache è ancora valida. I browser lo gestiscono in modo trasparente.
Cosa scatena una risposta 304?
Una richiesta che porta header If-None-Match o If-Modified-Since i cui valori corrispondono ancora alla risorsa attuale.
Perché vedo 304 negli strumenti per sviluppatori invece di 200?
Il browser aveva una copia in cache e l'ha rivalidata. Lo stato mostra che il server ha confermato la cache invece di reinviare il file.