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 200in caso di risposta completata con successoHTTP 404in caso di risorsa non trovataHTTP 403in 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
404indica una risorsa non disponibile. - lo status code
410indica 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 410ha 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 del404che potrebbe essere casuale o involontario, l’HTTP 410non è 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.
Utile test. Vedo l’uso del 410 come una buona soluzione soprattutto per ottimizzare il carico che devono sopportare grossi siti con molte pagine che “spariscono” per un motivo o per l’altro.
Ottime considerazioni, sicuramente da tenere presente :)
Grazie, Simone.
Interessante…
ma non ho capito alcune cose… il file atom.xml un attimo prima che lo settassi con status 410 era 404 o era funzionante?
l’unica variabile del tuo esperimento e il setting dello stato o hai comunicato a chi usufruiva del feed di cambiarlo?
Prima del cambio il file era perfettamente funzionante. Da 1 anno restituiva uno status 301 reindirizzando alla versione RSS del feed, questo il motivo del trend in discesa che è possibile notare dal grafico.
La configurazione dello status 410 non ha previsto nessuna comunicazione o modifica di layout. Ho semplicemente agito lato server.
capito…
un altra cosa quel centinaio di richieste costanti presenti dopo il 5 ottobre dovrebbero rappresentare degli user che si sono dimenticati di aggioranre il feed, o forse rappresentano qualche servizio automatico?
Quelli rimasti sono tutti client, la percentuale di utenti reali non crawler è pressoché nulla.
grazie per la precisazione.
[...] Serve a qualcosa lo status HTTP 410? [...]