Как заставить страницу не кэшироваться в PHP?

У меня есть страница, index.php, которая показывает информацию, основанную на mysql db. На нем есть формы, и действие для форм устанавливается на отдельную страницу под названием process.php. Process.php выполняет всю базу данных CRUD, затем использует

header("Location: /webadmin/email/index.php"); 

чтобы отправить пользователя на исходную страницу.

Кажется, что это работает нормально, за исключением того факта, что исходная индексная страница не всегда отражает изменения, сделанные process.php. Я предполагаю, что страница кэшируется, потому что если я сделаю обновление (Ctrl + F5), страница покажет последние данные.

Как я могу предотвратить кэширование этой страницы? Я пробовал, что говорит страница PHP для заголовка () , но, похоже, она не работает. Параметры Cache-Control и Expires, похоже, не имеют никакого эффекта – страница все еще кэшируется.

Обновить

Хорошо, я частично ошибался. По-видимому, в IE работает:

 <?php header("Cache-Control: no-cache, must-revalidate"); 

Тем не менее, он определенно НЕ работает в FF, который по-прежнему показывает кэшированную версию. Любые идеи о том, почему это так, и как я могу заставить его остановить кеширование?

Solutions Collecting From Web of "Как заставить страницу не кэшироваться в PHP?"

Сделайте все браузеры в очереди:

 header("Location: /webadmin/email/index.php?r=".mt_rand(0, 9999999)); 

Это некрасиво, но он отвечает на вопрос: «Как заставить …»

Я буду играть безопасно и попытаюсь вывести все убийцы кэша, известные человеку (и браузеру). Мой список состоит из:

 <?php header("Last-Modified: " . gmdate("D, d MYH:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1 header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); // HTTP/1.0 header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past ?> 

Это правильный порядок, чтобы заставить его работать во всех браузерах:

 <?php header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1 header("Cache-Control: post-check=0, pre-check=0", false); header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past header("Pragma: no-cache"); // HTTP/1.0 header("Last-Modified: " . gmdate("D, d MYH:i:s") . " GMT"); ?> 
 <?php header("Cache-Control: no-cache, must-revalidate"); 

Попробуйте обмануть браузер с помощью ложного запроса:

 header("Location: /webadmin/email/index.php?x=1"); 
 <?php header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past ?> 

сделайте это, и это должно предотвратить кеширование во всех браузерах

протестирован в IE FF и хроме