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.