Состояние Javascript сохраняется при использовании кнопки «Назад» для перехода на страницу

Я использую Firefox и заметил кое-что интересное во время работы над своим сайтом. На одной странице есть таблица с информацией, но также поддерживаются переменные Javascript, указывающие на содержимое таблицы, чтобы упростить поиск информации.

Когда я ухожу со страницы, вводя URL-адрес, а затем нажимаю кнопку «Назад», чтобы вернуться, я заметил, что страница, похоже, сохраняет свое состояние. Таблица по-прежнему имеет то же содержимое, что и при моем уходе, и дальнейшее взаимодействие со страницей показывает, что переменные Javascript также сохранили свои значения.

Я предполагал, что мои функции $(document).ready(); будут запускаться снова при нажатии кнопки «Назад», но это явно не так, поскольку я написал эти функции, чтобы убедиться, что страница находится в исходном состоянии, независимо от текущего содержимого страницы.

Я думаю, что восстановление страницы таким образом вполне приемлемо, если я могу рассчитывать на правильное восстановление страницы. Если вместо этого страница будет восстановлена ​​в исходное состояние, это также будет приемлемо.

Безопасно ли полагаться на такое поведение? Было бы лучше использовать что-то вроде onunload, чтобы гарантировать, что состояние страницы не будет сохранено? Должен ли я просто предположить, что браузер будет делать все правильно?

Я бы сказал, что состояние моего веб-сайта определяется HTML на странице и содержимым переменных Javascript. Он использует AJAX (или, я думаю, технически AJAJ) для взаимодействия со страницами PHP, но все взаимодействия дискретны. транзакции. Единственным состоянием/сеансом, необходимым серверу, являются файлы cookie для аутентификации при входе в систему, которые не должны быть затронуты этим.


person bytesized    schedule 27.04.2015    source источник
comment
Проверьте эту ссылку о сохранении состояния страницы на кнопке «Назад»: stackoverflow.com/questions/9009858/   -  person Jonathan Anctil    schedule 28.04.2015
comment
Интересно, но они, кажется, испытывают противоположную проблему. Принятый ответ указывает на то, что то, что я вижу, никогда не должно происходить (чего я и ожидал).   -  person bytesized    schedule 28.04.2015
comment
Уважаемый, это обычная система кэширования Chrome или Firefox. когда вы возвращаетесь назад, это потому, что вы что-то забыли, поэтому вы восстанавливаете страницу, как будто вы это сделали прямо перед этим. Текст заполнен и т.д.   -  person Alexis Paques    schedule 28.04.2015
comment
Возможно, МОЖЕТ БЫТЬ, установка заголовка типа: header('Cache-Control: no-cache, no-store, must-revalidate'); header('Pragma: no-cache'); header('Expires: 0'); поможет удалить кеш.   -  person Alexis Paques    schedule 28.04.2015
comment
@AlexisPaques: это действительно хорошая функция, однако на нее не следует полагаться. Мне любопытно, что произойдет, если очистить кеш, прежде чем вернуться на страницу...   -  person Cristik    schedule 28.04.2015
comment
Тогда ничего не сохраняется, если вы очистите кеш, chrome/Firefox снова загрузит его с нуля!   -  person Alexis Paques    schedule 28.04.2015
comment
Похоже, Firefox сохраняет переменные состояния на кнопке «Назад», но мне нужно проверить это с разными браузерами!   -  person Jonathan Anctil    schedule 28.04.2015
comment
Да, только что попробовал, и он загружает страницу с нуля, перезапуская $(document).ready(); функции. Так безопасно ли тогда полагаться на него? Либо он загрузит все это идеально, либо перезагрузит его с нуля?   -  person bytesized    schedule 28.04.2015
comment
Можете ли вы попробовать с IE или Chrome?   -  person Jonathan Anctil    schedule 28.04.2015
comment
Только что пробовал через IE. Он не пытался восстановить состояние. У меня не установлен Хром.   -  person bytesized    schedule 28.04.2015