Принудительная страница для перезагрузки с сервера вместо загрузки кешированной версии

У меня есть веб-страница A. Пользователь нажимает на форму для отправки данных и берет его на веб-страницу B. Когда он нажимает кнопку "Назад", мне нужна веб-страница A, которая будет обновляться с сервера, а не загружается из кеша. У меня есть это: <meta http-equiv="expires" content="0">, но он, похоже, не работает. Я также попытался установить переменную на странице B (переменная сеанса через php), а затем проверить ее на странице A и обновить (или нет) в соответствии с ее существованием. Это, похоже, тоже работает. Основной код для этого: Страница A:

<?php 
if(isset($_SESSION['reloadPage'])) {
unset($_SESSION['reloadPage']);
echo'
<script>
window.location.replace("/****/****/*****.php");
</script>
';
}
?>

И на странице B:

$_SESSION['reloadPage'] = 1;

С помощью PHP-решения он просто пытается обновить страницу в бесконечном цикле. Что-то в моей логике отсутствует? Правильно ли это?

ИЗМЕНИТЬ При дальнейшем расследовании, когда вы указываете браузеру, что он не кэширует страницу, это также заставляет полностью обновлять серверную часть? Это то, что мне нужно. Полное обновление на стороне сервера на странице.

Ответ 1

OK попробуйте это вместо:

<?php
    if(!session_id()) {
        @session_start();   
    }
    header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
    header('Last-Modified: ' . gmdate( 'D, d M Y H:i:s') . ' GMT');
    header('Cache-Control: no-store, no-cache, must-revalidate');
    header('Cache-Control: post-check=0, pre-check=0', false);
    header('Pragma: no-cache'); 

    if(isset($_SESSION['form_submitted'])) {
        unset($_SESSION['form_submitted']);
        header('Location: ?' . uniqid());
        #header('Refresh: 0');
    }
?>

Вам нужно будет установить $_SESSION ['form_submitted'] = true на стр. 2.

Ответ 2

Попробуйте со всеми тремя:

<meta http-equiv="cache-control" content="no-cache"> <!-- tells browser not to cache -->
<meta http-equiv="expires" content="0"> <!-- says that the cache expires 'now' -->
<meta http-equiv="pragma" content="no-cache"> <!-- says not to use cached stuff, if there is any -->

Ответ 3

<?php 
    session_start();
    if(isset($_SESSION['reloadPage'])) {
        unset($_SESSION['reloadPage']);
           //no outputting code above header
        header("Cache-Control: no-cache, must-revalidate");
        header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
        header("Location: http://www.mypage.com/");
    }
?>

Ответ 4

Я знаю, что это старый вопрос и уже есть ответ (который не освежает сервер). Поэтому я хотел бы поделиться решением с помощью jQuery.

$('#back-button').click(function(){
   setTimeout(location.reload(true), 1000);
});

Объяснение:
Когда вы нажмете кнопку "Назад", setTimeout вызывается через 1 секунду (1000 миллисекунд). Затем страница будет перезагружаться с сервера, поскольку параметр внутри reload равен true.

Если вы поместите true внутри reload, он перезагрузится с сервера, а если вы поместите false, он перезагрузится из кеша. Источник w3schools.

Ответ 5

Ваш JavaScript должен быть...

window.location = "/****/****/*****.php"

Я думаю, что это должно исправить ваш цикл.

Ответ 6

<?php 
  session_start();
  if(isset($_SESSION['reloadPage'])) {
  unset($_SESSION['reloadPage']);
  echo'
  <script>
  window.location.replace("/****/****/*****.php");
  </script>
  ';
}
?>