2012-04-10 6 views
14

Mam dwie strony A i B. Przepływ jest w następujący sposób:Chrome Wstecz: tylko dając buforowane wersji strony początkowej, bez Ajaxed zawartości

  • iść do
  • javascript Ajaxes pęczek treści, aby dodać do A, tworząc '
  • iść do B
  • naciskając [Back] wraca do A, a nie', bez wszystkich Ajaxed zawartości

Czy ktoś jeszcze to zauważyłem, a jeśli tak, jak to naprawić?

Jeśli Chrome buforował stan A 'tuż przed udaniem się do B i odtwarzał A z tyłu, byłoby to do przyjęcia. Jeśli Chrome po prostu ponownie załaduje całość A (łącznie z żądaniami Ajax, które przekształciło go w A), to też by działało. Obecne zachowanie, które ładuje starą, niekompletną wersję A, nie jest tym, czego chcę.

EDYCJA: Wiem, że ładuje wersję z pamięci podręcznej, ponieważ serwer nie otrzymuje żadnych nowych żądań po naciśnięciu przycisku [Wstecz].

+0

Co zrobić nagłówki cache wygląda jak na odpowiednią stronę s? –

+0

@QuintinRobinson: Przepraszam, co to jest nagłówek pamięci podręcznej? –

+0

Twój serwer powinien egzekwować zasady buforowania stosowane do stron za pomocą nagłówków kontroli pamięci podręcznej. Szczerze zasugerowałem, abyś przeczytał w tej sprawie, oto jeden zasób: http://www.mnot.net/cache_docs/ –

Odpowiedz

0

Cóż, jeśli używasz żądania XHR a nie ukryte ramki z tyłu i przyciski do przodu nie przywiązać się do wniosku XHR

0

wiem, że temat jest stary, ale rozwiązanie tego problemu nie jest tak łatwo znaleźć I Właśnie zmarnowałem kilka godzin, żeby go rozwiązać. Te dwie linie rozwiązały dla mnie problem Chrome:

Response.Cache.SetCacheability(HttpCacheability.NoCache); 

Response.Cache.SetNoStore(); 
+0

to jest javascript? –

+1

Nie, wygląda na to, że jest .net. Zmieni się w zależności od używanego języka/frameworka. Zasadniczo wystarczy ustawić nagłówek HTTP 'Cache-Control: no-store'. Jeśli używasz szyn, na przykład http://www.fordevs.com/2011/10/how-to-prevent-browser-from-caching-a-page-in-rails.html – Ryan

5

Ten temat jest stary, ale pomyślałem, że udostępnię to rozwiązanie. Aby Firefox, Chrome i Safari zachowywały się konsekwentnie, musisz ustawić funkcję obsługi usuwania na stronie, która musi zostać ponownie załadowana po powrocie, a także używać nagłówków pomijania pamięci podręcznej.

Przykład

W nagłówki HTTP

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

A w JavaScript do strony

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

Czytaj tutaj, aby uzyskać więcej informacji: http://madhatted.com/2013/6/16/you-do-not-understand-browser-history

Powiązane problemy