浏览器:Firefox 6.0
我有一个页面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"/>
我还连接了pagehide
和pageshow
事件。 当我离开页面时,pagehide
会调用,并使用正确的事件属性值persisted = false
(这是需要的:不保留缓存!)浏览了几页后,我使用
window.history.go(-2);
回到页面A。此时,我希望Firefox轮询服务器以获取更新版本,而不是从缓存中显示。 Page A的pageshow
与事件属性persisted = false
的正确值一起调用(表示未从缓存加载页面)。 但是页面内容不是服务器数据; 它是旧的内容(与最初离开页面时相同)! Fiddler也没有显示新的服务器请求。Google Chrome也表现出相同的行为。 IE按预期工作(重新加载新数据)!
有任何想法吗?
先感谢您!
`Cache-Control: no-cache Pragma: no-cache Expires: -1`
不幸的是,它们并没有起到帮助的作用。在收到您的回复后,我重新检查了头信息,并发现Firefox需要另一个头信息来防止缓存:http://blog.httpwatch.com/2008/10/15/two-important-differences-between-firefox-and-ie-caching/`Cache-Control: no-cache, no-store`
添加了上述头信息之后,在IE、Firefox、Chrome和Safari中都能正常工作。只有Opera仍然会出现缓存问题,但我暂时将其推迟处理。 - Venkat