我已经尝试了本应阻止页面被缓存的元标记的所有组合和排列,但 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:
到目前为止,我已经尝试了每一个建议,但我仍然无法让它发挥作用。当我使用 Chris 的 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
header 之前。
我也尝试过 session_start()
但即使在阅读了手册之后我也不确定我是否正确使用了它。我也将其放在页面的最顶部。
我愿意接受任何可以在不破坏其他页面功能的情况下使这项工作正常进行的建议。我知道我看到过每次使用后退按钮时都会重新加载的页面,他们是怎么做到的?!
已解决!
事实证明,我有多个问题对我不利,但通过尽职调查,我能够消除这些问题并取得胜利。
Chris 将他的代码更新为...之后
<?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(动态 Web 模板),所以我用 Chris 的代码一次更新了所有页面.我没有意识到的是 DWT 在 DOCTYPE
header 之后立即开始,因此代码从未插入到我的页面中。我找不到让 DWT 包含 DOCTYPE
header 的方法,所以我进入我的所有页面并手动将代码插入到 DOCTYPE
header 上方。
接下来我发现,即使我的服务器设置为将 .htm
和 .html
解析为 .php
而 .html
页面在我插入 Chris 的代码的地方生成了一个错误,显示了“无法修改 header , header 已发送”的效果。我真的不在乎我的扩展名是什么,所以我只是将我所有的 .html
扩展名更改为 .php
扩展名。
最后一个小烦恼是,即使页面现在没有被缓存(就像我想要的那样),当用户使用后退按钮时,Firefox 会将用户放在上一页的最后位置(即如果用户在当他们导航到页面 b 时位于页面 a 的底部,然后用户使用页面 b 上的后退按钮,他们将返回到页面 a 的底部,而不是所需的页面 a 的顶部)。 trim 我原来的 JavaScript 修复了这个......
<script type="text/javascript">
onload=function(){
document.getElementById('content').scrollTop=0;
}
</script>
尽管对于这样一个简单的问题来说这似乎非常复杂,但我很高兴它已得到修复。感谢大家(尤其是 Chris)的帮助。
最佳答案
这对我有用
创建一个新的 php 文件。我可以使用后退和前进按钮,页面上的数字总是更新
<?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 - 按下后退按钮时如何使 Firefox 重新加载页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4630484/