Давайте начнем с типичной среды PHP / html / JavaScript.Пропустив <head>
и <body>
, предположим, что у нас есть:
<script>
var foo = <?php echo generateFoo(); ?>;
</script>
Предположим, это работает отлично во всех отношениях, за исключением одного незначительного недостатка.То есть всякий раз, когда я ухожу со страницы и нажимаю «назад», я получаю старое значение foo
, а не обновленное.
Я понимаю эту ошибку.Нажатие «назад» загружает страницу из кэша, а не с сервера, поэтому она возвращает предыдущее значение PHP, а не текущее.Тем не менее, я хочу, чтобы заставить обновления.(Это особенно важно, потому что пользователь может изменять значение на другой странице, а тот, кто не является экспертом по html, ожидает, что «назад» приведет вас к обновленной версии предыдущей страницы. Код всегда легче изменитьчем поведение пользователя.)
Что я могу написать, что будет функционировать точно так же, как код выше, но также будет выполняться при переходе пользователя назад?
(я думаю, что правильное решение может использовать AJAX,но, возможно, я ошибаюсь. Страница уже использует AJAX из jquery CDN, поэтому я могу также использовать его, если смогу.)
Редактировать:
Решение, которое позволяет кэшировать, но просто обновляет эту переменную, было бы идеально.Однако, если остановка кэширования - единственное решение, я даже не знаю, как это сделать.Так что говорить мне, как это сделать, было бы хорошо.
Скопировано прямо из моего кода без изменений:
<?php
...
header("Cache-Control: no-cache, no-store, must-revalidate");
header("Pragma: no-cache");
header("Expires: 0 ");
?>
Так что да, яуже пытался остановить кеширование.Это не работает в BFCache.