Для небольшого сайта интрасети у меня есть динамическая (включая AJAX) страница, которая некорректно кэшируется Firefox. Есть ли способ отключить кеширование браузера для одной страницы?
Вот настройка, которую я использую:
Контент, который меня особенно интересует, это текст страницы и параметры по умолчанию в некоторых <select>
s. Поэтому я не могу просто добавить случайные числа в конце некоторых URL-адресов изображений, например.
Я следовал рекомендациям, которые я получил до сих пор:
Я включаю параметр URL временной метки и перенаправляю его на новый, если страница перезагружается через 2 секунды, например:
$timestamp = $_GET['timestamp']; if ((time()-$timestamp) > 2) { header('Location:/intranet/admin/manage_skus.php?timestamp='.time()); }
Теперь Firebug показывает, что заголовки не указывают кеш, но проблема сохраняется. Вот заголовки ответов для страницы:
Date Fri, 25 Sep 2009 20:41:43 GMT Server Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i mod_autoindex_color PHP/5.2.8 X-Powered-By PHP/5.2.8 Expires Mon, 20 Dec 1998 01:00:00 GMT Last-Modified Fri, 25 Sep 2009 20:41:43 GMT Cache-Control no-cache, must-revalidate Pragma no-cache Keep-Alive timeout=5, max=100 Connection Keep-Alive Transfer-Encoding chunked Content-Type text/html
Добавить текущую временную метку в качестве параметра URL-адреса, например
http://server.com/index.php?timestamp=125656789
Я думаю, это говорит вам, что вы хотите:
http://www.thesitewizard.com/archive/phptutorial2.shtml
Найдите «Предотвращение браузера из кэширования»
header( "Expires: Mon, 20 Dec 1998 01:00:00 GMT" ); header( "Last-Modified: " . gmdate("D, d MYH:i:s") . " GMT" ); header( "Cache-Control: no-cache, must-revalidate" ); header( "Pragma: no-cache" );
Вы должны отправить следующий заголовок:
Cache-control: no-cache
в ответе HTTP.
Вы можете добавить эти заголовки:
Cache-Control: no-cache
И (для обратной совместимости с HTTP / 1.0 клиентами)
Pragma: no-cache
Вот еще один пример, который не является специфичным для PHP.
Попробуйте это в разделе <head> </head>
:
<meta http-equiv="cache-control" content="no-cache, no store"/> <meta http-equiv="Expires" Content="Mon, 25 May 2009 19:07:03 GMT">
Найдено, что в конце длинной нити здесь:
http://forums.mozillazine.org/viewtopic.php?f=25&t=673135&start=75
Используйте функцию header (). Вы должны установить несколько, чтобы охватить все браузеры; см. http://www.php.net/manual/en/function.header.php#75507