哪些浏览器有后退前进缓存?(bfcache保存对DOM的修改)

8
现在有哪些浏览器支持后退缓存(bfcache)?
后退缓存是浏览器的内存缓存,当用户点击后退和前进按钮时会使用它。它会存储页面状态,以便当用户返回时能够立即加载DOM所做的任何更改。
请注意,这与所有浏览器具有的常规缓存机制不同。Bfcache仅适用于用户单击后退按钮的情况,并且可以处理DOM中的动态更改。
我能找到的唯一关于该bfcache的信息都是多年前的,引用了Firefox 1.5。现代浏览器是否支持?在哪里可以找到相关信息?

4
对于投票关闭此问题需要更加专注的人,我该如何使这个问题更加专注呢?我真的需要为每个浏览器单独发布一个问题吗? - Flimm
1
我怀疑他们不理解bfcache是什么,因此认为这是一个“焦点”问题。你的问题非常清楚,我看不出需要更多的“焦点”。 - Brian C
1个回答

7

Firefox: 是的

Firefox支持后退缓存,您可以在此处找到详细信息:

请注意,尽管文档已经过时,但bfcache确实适用于新版本的Firefox,例如版本75。请注意,页面和扩展易于意外禁用bfcache。我发现我安装了一个扩展程序,它会在所有页面上禁用bfcache。

Safari:是的,但不支持HTTPS

关于Safari,我能找到的仅有以下文章:

该文章指出,页面缓存(即后退缓存)在所有使用HTTPS的页面上都被禁用,而在当今的网络中,这占了很大一部分。

Chrome:是的

根据Google的web.dev文章,Chrome支持此功能:

从版本86开始,Chrome为Android上的跨站导航启用了bfcache,供一小部分用户使用。在随后的版本中,逐步推出了其他支持。自版本96以来,所有Chrome用户都已启用bfcache。

请参见chromestatus中的此功能


一个问题:我在使用Firefox(v114)时遇到了糟糕的经历。我已经检查了我的about:config,docshell.shistory.bfcache.ship_allow_beforeunload_listeners的默认值是false。当我将其设置为true时,我得到了预期的行为来使用bscache。是否有一种方法可以通过页面中的代码强制实现这种预期的行为?也许是JavaScript? - Jorge Mauricio
@JorgeMauricio 我认为你应该删除任何添加unloadbeforeunload事件监听器的JavaScript代码。尝试禁用扩展程序,因为它们可能会添加这些监听器。获取更多帮助,请阅读:https://developer.mozilla.org/zh-CN/docs/Mozilla/Firefox/Releases/1.5/Using_Firefox_1.5_caching - Flimm
嘿,Flimm,谢谢你的建议。我正在使用pageshow和pagehide事件。我在一个匿名的Firefox窗口上进行了测试,但仍然无法正常工作。 - Jorge Mauricio

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