防止用户点击返回按钮时浏览器重新加载页面

7

我似乎与大多数SO用户的问题相反。 我有一个很少更改的静态页面,当用户快速返回到该页面时,我希望浏览器不重新加载该页面。 我没有找到任何简单的规则清单,详细说明浏览器在后退导航时何时重新加载,何时不重新加载。

如果这有所区别,我的URL具有查询字符串,并使用https://协议提供。


为什么只在后退导航时更新?如果用户从历史记录中加载此页面并且未更新,怎么办?它也不应该重新加载。你需要的是HTTP 304未修改状态码:http://www.w3.org/Protocols/HTTP/HTRESP.html - user4035
这只是我不太关心的事情。我只关注解决后退导航的情况,因为许多用户会在找不到需要的内容时快速地点击链接然后返回。在这一点上增加额外的服务器负载是我想要解决的问题。 - levik
你正在使用 PHP 脚本并想要发送 HTTP 304 未修改状态吗? - user4035
不,那不是我正在做的事情,也不是我想要做的事情。 - levik
如果您有一个静态HTML页面,那么情况就简化了。Apache必须自动发送HTTP 304标头。您能提供一个测试页面的链接,看起来与您使用的页面完全相同吗? - user4035
2个回答

10

只需使用缓存控制标头告诉浏览器缓存您的页面,无需知道是否已使用返回按钮。您可以在Google中找到许多示例 - http cache control headers

具体来说,请查看这些 meta 标签:

<meta http-equiv="CACHE-CONTROL" content="..." />
<meta http-equiv="EXPIRES" content="..." />

编辑:

这是那个谷歌搜索结果之一的链接。我认为它对这些头部信息的工作原理给出了相当好的解释。使用HTTP缓存头提高应用程序性能

通过这些头部信息,您可以指定页面缓存的时间;10分钟、30分钟、几个小时、几天等。


我想我正在寻找的是一种资源,它将列出不同浏览器在不同情况下如何遵守这些标头。例如,我记得过去某些浏览器会以不同的方式处理带有查询字符串和不带查询字符串的URL。 - levik
这就是为什么我为你提供了那个谷歌链接。网络上有大量关于这方面的信息。我在我的答案中添加了来自该搜索的资源之一,它很好地解释了这个问题并给出了示例。 - Miguel-F

0
你尝试过使用 body 标签的 onpageshow 事件吗?
<script type="text/javascript">
    function caller()
    {
      return false;
    }
</script>
</head>

<body onpageshow="caller();">
</body>

适用于大多数情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接