Кнопка возврата в Chrome: предоставляется только кешированная версия начальной страницы без какого-либо содержимого Ajaxed.

У меня две страницы: A и B. Поток выглядит следующим образом:

  • Перейти к A
  • javascript Ajaxes представляет собой кучу контента для добавления в A, образуя A '
  • перейти к B
  • нажатие [Назад] возвращается к A, а не A ', без содержимого Ajaxed

Кто-нибудь еще заметил это, и если да, то как вы это исправите?

Если Chrome был кешировать состояние A перед загрузкой в B и воспроизводит A 'назад, это было бы приемлемо. Если Chrome просто повторно загрузил все A (включая запросы Ajax, которые преобразовали его в A), которые тоже будут работать. Текущее поведение, которое загружает старую, неполную версию A, не то, что я хочу.

EDIT: Я знаю, что он загружает кешированную версию, потому что сервер не получает никаких новых запросов, когда я нажимаю [Назад].

Ответ 1

Эта тема устарела, но я решил поделиться своим решением. Чтобы заставить Firefox, Chrome и Safari вести себя последовательно, вам нужно установить обработчик выгрузки на странице, которую нужно перезагрузить при возвращении, а также использовать заголовки с ошибками кеша.

пример

В заголовках HTTP

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

И в javascript для страницы

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

Читайте здесь для получения дополнительной информации: http://madhatted.com/2013/6/16/you-do-not-understand-browser-history

Ответ 2

Я знаю, что тема старая, но решение этой проблемы не так просто найти, я просто потратил несколько часов на ее решение. Эти две линии решили проблему Chrome для меня:

Response.Cache.SetCacheability(HttpCacheability.NoCache);

Response.Cache.SetNoStore();

Ответ 3

Ну, если вы используете xhr-запрос, а не скрытые кадры, кнопки назад и вперед не привязываются к запросу xhr