温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - How to prevent content being displayed from Back-Forward cache in Firefox?
browser-cache cache-control firefox

其他 - 如何防止Firefox中的反向缓存显示内容?

发布于 2020-05-13 11:44:10

浏览器: Firefox 6.0

我具有以下设置的Page A,以确保内容未存储在浏览器bfcache中:

1) $(window).unload(function(){});

2)以下HTTP标头:

<meta http-equiv="pragma" content="no-cache" /> 
<meta http-equiv="expires" content="-1" />
<meta http-equiv="cache-control" content="no-cache"/>

我还联系了活动pagehidepageshow当我离开页面时,pagehide将使用事件属性的CORRECT值调用persisted = false(这是需要的:缓存中没有持久性!)

在浏览了两个页面之后,我必须window.history.go(-2);返回页面A。至此,我希望Firefox轮询服务器以获取更新的版本,而不是从缓存中显示。使用pageshow事件属性的CORRECT值调用页面A persisted = false的页面(表示该页面未从缓存加载)。但是页面内容不是服务器数据;它是过时的内容(与最初离开页面时相同)!Fiddler也不向服务器显示新请求。

Google Chrome浏览器也表现出相同的行为。IE可以正常工作(重新加载新数据)!

知道我想念什么吗?

提前致谢!

查看更多

提问者
Venkat
被浏览
64
Boris Zbarsky 2011-08-31 04:44

涉及多个缓存。有浏览器的文档缓存(bfache),浏览器的HTTP缓存以及可能的中间HTTP缓存。

<meta>您上面显示标签在当前的Chrome或Firefox中绝对无效。它们可能在IE中起作用。

因此,可能只是从浏览器的HTTP缓存中读取您的页面。

如果您确实要发送无缓存HTTP标头,则应该这样做。但是它们必须是实际的HTTP标头:正如我上面所说的,<meta>标记“等效”什么也没做。

而且,重要的是,任何其他中间缓存都不会解析HTML,因此如果您实际上没有发送正确的HTTP标头,则可能会缓存内容。