In questo post vorrei esporre i risultati di un esperimento condotto l'anno scorso. Obiettivo del test era verificare il comportamento di crawler e client in caso di status HTTP 410
.
Che cos'è lo status HTTP 410?
Come ben saprà chi legge abitualmente questo blog o si interessa di server, un server può restituire diversi status code in risposta ad una richiesta di una pagina web. Tra gli status code pià famosi troviamo
HTTP 200
in caso di risposta completata con successoHTTP 404
in caso di risorsa non trovataHTTP 403
in caso di accesso non consentito
Lo status code restituito da un server è fondamentale e determina il risultato di una risposta HTTP. Parlando di motori di ricerca, lo status code influenza il posizionamento di una pagina così come la sua indicizzazione.
Lo status code 410
rappresenta la risposta in caso di risorsa non più disponibile. La sua definizione tecnica è HTTP 410 Gone
. Per certi versi è molto simile al 404
poiché entrambi identificano una risorsa irraggiungibile, tuttavia esiste una differenza non banale:
- lo status code
404
indica una risorsa non disponibile. - lo status code
410
indica una risorsa non più disponibile.
In altre parole, lo status code 410
implica che a quell'indirizzo prima fosse disponibile una risorsa che, al momento, è stata rimossa. Al contrario, lo status code 404
non fornisce questo dettaglio: l'indirizzo richiesto forse non ha mai ospitato una risorsa, forse sì... non si sa.
Agli occhi della maggior parte dei client ciò che conta è il risultato. In entrambi i casi ci troviamo di fronte ad una risorsa non disponibile e l'errore va gestito. Alcuni software rimuovono la risorsa dai propri indici, altri la nascondono, altri ancora mettono in atto azioni correttive per verificare un'eventuale collocazione alternativa.
La maggior parte dei motori di ricerca afferma di gestire lo status code 410
allo stesso modo del 404
. Obiettivo del mio test era verificare quest'affermazione sfruttando la necessità di voler rimuovere un feed non più disponibile.
Numero di richieste HTTP
Il grafico seguente riassume le richieste HTTP inviate alla pagina /atom.xml
prima e dopo l'impostazione dello status code HTTP 410
, il 5 Ottobre 2008.
Nota. Per ingrandire i valori potete con il mouse selezionare una porzione del grafico. Lo script provvederà ad ingrandire a schermo solo il range che avete evidenziato.
I risultati
Analizzando i risultati dell'esperimento è possibile osservare diversi comportamenti curiosi. Ecco alcune mie considerazioni, in ordine sparso.
- Contrariamente ad ogni mia aspettativa, lo status
HTTP 410
è supportato da una buona fetta dei client web: crawler, motori di ricerca, parser... E' possibile notare come, nel giro di qualche giorno, le richieste alla pagina sono diminuite sensibilmente. - A differenza dello status
HTTP 404
, lo statusHTTP 410
ha un effetto quasi immediato. Teoricamente parlando questo ha un senso ma, anche in questo caso, non mi sarei aspettato una così concreta aderenza alle specifiche. Il motivo per il quale l'HTTP 410
è così immediato è da ricercare nel suo significato: la volontà di azione. A differenza del404
che potrebbe essere casuale o involontario, l'HTTP 410
non è uno status code predefinito e viene impostato deliberatamente. Questa sottile differenza autorizza il client ad agire senza eccessivi controlli aggiuntivi, come avviene invece nel caso di unHTTP 404
. - A differenza dello status
HTTP 404
, buona parte dei client mette in atto un processo di rimozione irreversibile. In altre parole, una volta appurata la non disponibilità della risorsa, i client limitano i controlli periodici ad una frequenza inferiore a quella normalmente prevista per unHTTP 404
.
In conclusione, direi che è possibile affermare con una discreta certezza che l'HTTP 410
è efficace. Inoltre, sembra essere dimostrato che per rimuovere velocemente una pagina dalla rete questo status code rappresenta una soluzione più efficace rispetto alla semplice cancellazione del file dal server e conseguente HTTP 404
.