Ho riscontrato uno strano bug in Chrome 19. Ho implementato un sito Web completo AJAX (ogni collegamento non esterno è aperto tramite richiesta AJAX) con il supporto pushState. Trasmetto i frammenti HTML in AJAX tramite il formato JSON.Errore Ajax + pushState in Chrome
Quando esco dal mio sito tramite un collegamento esterno e poi torno indietro, Chrome esegue il rendering dei dati memorizzati nella cache per quell'URL: il problema è che memorizza nella cache il contenuto JSON e lo mostra invece della pagina Web completa.
Questo è riproducibile da questi passaggi (UPDATE: Ho rimosso la funzionalità AJAX sul mio sito da allora, in modo da questo bug non fa più apparire):
- Aprire http://beta.mirtes.cz/
- Cliccare sulla seconda data link (16. 6. 2012 accanto a "Tutto è iniziato con una strana e-mail"). Questa pagina (che ora si trova a http://beta.mirtes.cz/it-all-began-with-a-strange-e-mail) viene caricata tramite AJAX.
- Fare clic su "Tutto è iniziato con una strana e-mail". Sei reindirizzato a un sito Web esterno.
- Fare clic su "Indietro" in Chrome dopo che la pagina è stata caricata completamente.
Provo a inviare tutte le risposte AJAX con Cache-Control: no-cache, ma senza alcun effetto.
Firefox 12 funziona correttamente.
Puoi spiegare un po 'di più cosa hai fatto e come è stato risolto il problema? – Ryan
Sto facendo tutte le richieste AJAX con un ulteriore parametro GET - in questo caso, ajax = 1. Questo parametro è invisibile all'utente, perché viene eseguito solo in background. –
In questo modo, il browser può conoscere la differenza tra il contenuto HTML completo e il contenuto JSON AJAX perché gli URL sono diversi. E quindi non mostra il contenuto JSON memorizzato nella cache dove non dovrebbe. Puoi controllare la funzionalità sulla mia homepage su http://ondrej.mirtes.cz/. –