确保页面在返回时重新加载

时间:2009-07-22 16:00:52

标签: language-agnostic

至少在chrome中,当我点击后退按钮时,它实际上并没有重新加载页面,它只是使用存储的副本我猜。我怎样才能确保当有人这样做时,会重新加载页面?

3 个答案:

答案 0 :(得分:2)

我还没有尝试过,但您可以尝试使用您的文件发送Cache-Control HTTP标头。例如在PHP中:

header('Cache-Control: no-cache,no-store,max-age=0');

这将告诉您的浏览器(以及沿途的缓存)不要在任何情况下缓存此文件。但是,在单击后退按钮时传递前一个文件不一定被视为缓存,因此可能会忽略此类标题。

如果您真的想避开后退按钮,可以尝试使用Javascript。我真的不推荐这种方法 - 你应该退一步思考你为什么要这样做。也就是说,HTML体内的这些代码应该可以工作:

<input type="hidden" id="back_button" value="0" />
<script>
var bb = document.getElementById('back_button');
if (bb.value !== '0') {
    location.href = location.href + '?rand=' + parseInt(Math.random()*9999);
}
bb.value = '1';
</script>

这将打开当前页面,但附加了一个'rand'查询字符串参数来填充任何缓存。

答案 1 :(得分:2)

在PHP中你会这样做:

header('Expires: Mon, 20 Dec 1998 01:00:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-cache, must-revalidate');
header('Pragma: no-cache');

但是,发送的标头名称对于任何服务器端编程语言都是相同的,因为它们最终都会通过HTTP传递给客户端。

请参阅维基百科的List of HTTP Headers,了解有关这些内容的信息。

答案 2 :(得分:0)

如果你在asp.net世界,我相信你应该做的就是

Response.Cache.SetCacheability(HttpCacheability.NoCache)

在你的Page_Load