Я пробовал все комбинации и перестановки метатегов, которые должны препятствовать кэшированию страницы, но Firefox ВСЕ ЕЩЕ кеширует страницу! Мне просто нужен URL-адрес для перезагрузки, когда пользователь нажимает кнопку «Назад». Прекрасно работает в IE8.
Я пробовал все это ...
<meta http-equiv="Cache-Control" content="no-store" />
<meta http-equiv="Pragma" content="no-cache"/>
<meta http-equiv="Expires" content="-1"/>
<meta http-equiv="Expires" content="Sat, 1 Jan 2000 00:00:00 GMT" />
... а еще я пробовал следующий JavaScript ...
<input type="hidden" id="refreshed" value="no"/>
<script type="text/javascript">
onload=function(){
var e=document.getElementById("refreshed");
if(e.value=="no"){
e.value="yes";
}
else{
e.value="no";
location.reload();
}
}
</script>
... все безрезультатно. Что мне здесь не хватает? Страницы создаются с помощью PHP, если это важно.
ОБНОВЛЕНИЕ 1:
Я пробовал все предложения до сих пор, но все еще не могу заставить их работать. Когда я использую PHP-код Криса, я использую его вот так ...
<?php
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
<!--the rest of my page-->
.. и, как вы можете видеть, он находится в ЭКСТРЕМАЛЬНОЙ верхней части моей веб-страницы, перед заголовком DOCTYPE
.
Я также экспериментировал с session_start ()
, но даже после прочтения руководства я не уверен, что использую его правильно. Я тоже помещал это прямо в самом верху моей страницы.
Я открыт для ЛЮБЫХ ПРЕДЛОЖЕНИЙ, которые позволят этой работе работать без нарушения других функций страницы. Я знаю, что видел страницы, которые перезагружались КАЖДЫЙ РАЗ при нажатии кнопки «Назад». КАК ОНИ ЭТО ДЕЛАЮТ ?!
РЕШЕНО!
Оказывается, у меня было несколько проблем, которые работали против меня, но благодаря должной осмотрительности я смог устранить эти проблемы и выйти победителем.
После того, как Крис обновил свой код до ...
<?php
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
echo time();
?><a href="http://google.com">aaaaaaaaaaaaa</a>
Я обнаружил, что его код действительно работал, когда я использовал его ТОЧНО, как он, ни с чем другим, но когда я поместил его на свои страницы, он не работал. Все мои страницы имеют формат .php
или .html
, и все они прикреплены к DWT (динамическому веб-шаблону), поэтому я обновлял их все сразу с помощью кода Криса. Чего я не понимал, так это того, что DWT запускается СРАЗУ ПОСЛЕ заголовка DOCTYPE
, поэтому код никогда не вставлялся на мои страницы. Мне не удалось найти способ включить в DWT заголовок DOCTYPE
, поэтому я просмотрел все свои страницы и вручную вставил код над заголовком DOCTYPE
.
Затем я обнаружил, что, хотя мой сервер настроен на синтаксический анализ .htm
и .html
как .php
, .html
страницы генерировали ошибку в том самом месте, где я вставил код Криса, говоря что-то вроде «не может изменять заголовки, заголовки уже отправлены». Мне было все равно, какие у меня расширения, поэтому я просто заменил все мои .html
расширения на .php
расширения.
Последним незначительным раздражением было то, что, хотя страница теперь не кэшировалась (как я и хотел), Firefox помещал пользователя в последнее место на предыдущей странице, когда они использовали кнопку «Назад» (т.е. если пользователь находился в внизу страницы a, когда они перешли на страницу b, затем пользователь использовал кнопку «Назад» на странице b, они будут возвращены в конец страницы a, а не вверх страницы a, как хотелось бы). Урезание моего исходного JavaScript исправило это ...
<script type="text/javascript">
onload=function(){
document.getElementById('content').scrollTop=0;
}
</script>
Несмотря на то, что это кажется очень сложным для такой простой проблемы, я рад, что она исправлена. Спасибо за вашу помощь всем (особенно Крису).