Come probabilmente saprete già, dal momento che vi siete imbattuti in questo articolo, Google Chrome - come la maggior parte degli altri browser - effettua un caching locale delle istruzioni di reindirizzamento che riceve tramite HTTP, quelli che in lingua inglese si chiamano HTTP Redirect 301: questo significa che, in caso di ricezione di un HTTP response di tipo 301 - Permanent, il browser memorizzerà questa "risposta" per un determinato lasso di tempo, evitando di chiedere al server ulteriori HTTP Response per quella stessa URL.
Si tratta di un comportamento assolutamente corretto da parte del browser, perfettamente in linea con quanto stabilito dall'RFC 7231 Section-6.4.2, che recita quanto segue:
A 301 response is cacheable by default; i.e., unless otherwise indicated by the method definition or explicit cache controls (see Section 4.2.2 of [RFC7234]).
La principale conseguenza di questo HTTP response caching è che, ogniqualvolta una pagina risponde alla request del nostro browser con un 301 Redirect, questa diventa di fatto inaccessibile per un bel pò di tempo. Questo effetto non crea alcun problema quando il 301 è a tutti gli effetti "permanente", ma può comportare qualche problema in sede di sviluppo web, ad esempio quando si sta configurando un Web Server IIS o NGINX, nel momento in cui si effettua un errore di reindirizzamento: questa situazione si verifica quando una pagina viene erroneamente configurata per restituire un HTTP 301 Redirect al nostro browser: a quel punto l'errore viene messo in cache dal browser, rendendo di fatto la pagina inaccessibile per un certo lasso di tempo, provocando non pochi grattacapi al povero sviluppatore web.
Questo tipo di sviste sono piuttosto frequenti, e in una certa misura inevitabili quando si sperimentano delle soluzioni di caching, load balancing e redirect su ambienti di test: per quanto mi riguarda posso dire che mi succede in continuazione, motivo per cui mi sono da tempo abituato a lavorare con browser con cache disattivata e/o con cache che viene rimossa automaticamente alla chiusura: nei rari casi in cui mi trovo a dover fare questi esperimenti con browser non di mia proprietà o che per qualche motivo non posso configurare in questo modo, risolvo utilizzando la modalità Finestra di navigazione in Incognito di Chrome, la quale - come certamente sapete - cancella la cache ogni volta che il browser viene chiuso.
Nel caso in cui questo problema si verifichi su un browser utilizzato per la navigazione è possibile eliminare il problema legato alla cache nei seguenti modi:
#1: Cancellare tutti i dati della cache del browser
Il modo più semplice è, ovviamente, procedere con la cancellazione dell'intera cache del browser nel seguente modo:
- Menu > Impostazioni > Mostra impostazioni avanzate > Privacy, quindi fare clic su Cancella dati di navigazione...
- Assicurarsi che la checkbox "Immagini e file cache" sia correttamente selezionata (il resto è opzionale, a seconda di ciò che si desidera cancellare).
- Fare clic sul pulsante Cancella dati di navigazione.
Questo risolverà il problema, ma avrà l'effetto collaterale di cancellare anche la cache di qualsiasi altro sito.
#2: Cancellare i dati di cache per una pagina specifica
Nel caso in cui si voglia eliminare i dati presenti in cache relativi soltanto a una singola URL, è possibile procedere nel seguente modo.
- Premere SHIFT+CTRL+I per aprire il pannello Strumenti per sviluppatori.
- Aprire la scheda Network e abilitare l'opzione Disattiva cache (Disable cache): in questo modo, il browser non interrogherà mai la propria cache locale a seguito di qualsivoglia HTTP request.
- Digitare la URL che si desidera cancellare dalla cache del browser nella barra degli indirizzi e premere Invio.
- Fare clic e tenere premuto il pulsante Reload - quello posto a sinistra della barra degli indirizzi - fino a quando non si aprirà una finestra di opzioni avanzate: selezionare l'opzione Svuota la cache e ricarica manualmente (Empty Cache and Hard Reload).
- Non appena la pagina è stata completamente ricaricata, deselezionare la casella di controllo Disattiva cache / Disable cache così da disattivare tale funzione.
IMPORTANTE: Il pannello degli Strumenti per sviluppatori deve restare aperto per l'intera procedura, altrimenti l'opzione Svuota la cache e ricarica manualmente (Empty Cache and Hard Reload) non sarà resa accessibile.
La procedura sopra descritta è valida per Google Chrome, ma può essere facilmente adattata anche ad altri browser - Mozilla Firefox, IE ed Edge - che supportino le medesime funzionalità descritte sopra.
#3: Utilizzare la Modalità Incognito
In alternativa alle opzioni precedenti, ricordiamo che è sempre possibile accedere alla versione "uncached" della pagina utilizzando la Modalità Incognito di Google Chrome, ovvero aprendo una Finestra di navigazione in Incognito: questa modalità viene infatti lanciata senza prendere in considerazione la cache del browser ed elimina l'intera cache di navigazione ogni volta che il browser viene chiuso. Ovviamente, l'utilizzo della Modalità Incognito non risolverà il problema sul browser principale, per affrontare il quale occorrerà necessariamente ricorrere a una delle due opzioni descritte sopra.