2012-04-10 8 views
14

Ho due pagine, A e B. Il flusso è la seguente:Chrome pulsante indietro: solo dando versione cache della pagina iniziale, senza alcun contenuto ajaxed

  • andare in un
  • javascript Aiaci un mucchio di contenuti da aggiungere a una, formando un '
  • andare a B
  • premendo [Indietro] risale ad a, non a', senza tutto il contenuto ajaxed

qualcuno ha altrimenti l'ho notato e, in caso affermativo, come lo risolvi?

Se Chrome stava memorizzando nella cache lo stato A 'prima di andare a B, e riproduce A' sul retro, sarebbe accettabile. Se Chrome semplicemente ha ricaricato l'intera A (comprese le richieste Ajax che l'hanno trasformata in A '), avrebbe funzionato anche tu. Il comportamento attuale, che sta caricando una versione vecchia e incompleta di A, non è quello che voglio.

EDIT: So che sta caricando una versione memorizzata nella cache perché il server non riceve alcuna nuova richiesta quando premo [Indietro].

+0

Cosa fanno le intestazioni di cache sembra per la rispettiva pagina S? –

+0

@QuintinRobinson: Spiacenti, cos'è un'intestazione della cache? –

+0

Il server deve applicare la politica di memorizzazione nella cache applicata alle pagine tramite le intestazioni di controllo della cache. Vi suggerisco sinceramente di leggere questo argomento, ecco una risorsa: http://www.mnot.net/cache_docs/ –

risposta

0

Beh, se si utilizza richiesta XHR e non frame nascosti sul retro e pulsanti avanti non si leghi a richiesta XHR

0

so che argomento è vecchio ma soluzione a questo problema non è così facile da trovare I Ho appena perso poche ore per risolverlo. Queste due righe risolvono il problema di Chrome per me:

Response.Cache.SetCacheability(HttpCacheability.NoCache); 

Response.Cache.SetNoStore(); 
+0

è questo javascript? –

+1

No, sembra che sia .net. Cambierà in base a quale lingua/framework stai usando. Fondamentalmente è sufficiente impostare l'intestazione HTTP 'Cache-Control: no-store'. Ad esempio, se si utilizzano i binari, http://www.fordevs.com/2011/10/how-to-prevent-browser-from-caching-a-page-in-rails.html – Ryan

5

Questo argomento è vecchio ma ho pensato di condividere la mia soluzione. Per far sì che Firefox, Chrome e Safari si comportino in modo coerente, devi impostare un gestore di scaricamento sulla pagina che deve essere ricaricato quando torni indietro e utilizzare anche le intestazioni di busting della cache.

Esempio

In Intestazioni HTTP

Cache-Control: must-revalidate, no-store, no-cache, private

E nel javascript per la pagina

$(window).unload(function(){}); // Does nothing but break the bfcache 

Leggi qui per ulteriori informazioni: http://madhatted.com/2013/6/16/you-do-not-understand-browser-history

Problemi correlati