一个答案:除其他事项外, 卸载事件会使后退/前进缓存无效 。
一些浏览器将整个网页的当前状态存储在所谓的“
bfcache”或“页面缓存”中。这样,他们可以在通过后退和前进按钮进行导航时非常快速地重新呈现页面,并保留DOM和所有Javascript变量的状态。但是,当页面包含onunload事件时,这些事件可能会将页面置于非功能状态,因此该页面未存储在bfcache中,必须重新加载(但可以从标准缓存中加载)并重新从头开始渲染,包括运行所有onload处理程序。通过bfcache返回页面时,DOM保持其先前状态,而无需触发onload处理程序(因为该页面已被加载)。
请注意,关于Cache-
Control和其他HTTP标头,bfcache的行为与标准浏览器缓存不同。在许多情况下,浏览器会将页面缓存在bfcache中,即使它不将其存储在标准缓存中也是如此。
jQuery会自动将卸载事件附加到窗口,因此不幸的是,使用jQuery会使您的页面无法保存在bfcache中以进行DOM保留和快速前进/后退
。[更新:此问题已在jQuery 1.4中修复,因此仅适用于IE]
- 有关Firefox bfcache的信息
- 有关Safari页面缓存的信息以及未来卸载事件的工作方式可能发生的变化
- Opera使用快速历史记录导航
- Chrome没有页面缓存([1],[2])
- 用于处理DOM操作和bfcache的页面:
- 该页面将存储在常规缓存中
- 该页面不会,但仍会bfcached



