一个答案:除其他事项外, 。
一些浏览器将整个网页的当前状态存储在所谓的“bfcache”或“页面缓存”中。这使他们可以在通过后退和前进按钮导航时非常快速地重新呈现页面,并保留DOM和所有JavaScript变量的状态。但是,当页面包含onunload事件时,这些事件可能会将页面置于非功能状态,因此该页面未存储在bfcache中,必须重新加载(但可以从标准缓存中加载)并重新从头开始渲染,包括运行所有onload处理程序。通过bfcache返回页面时,DOM保持其先前状态,而无需触发onload处理程序(因为该页面已经加载)。
请注意,关于Cache-Control和其他HTTP标头,bfcache的行为与标准浏览器缓存不同。在许多情况下,浏览器会将页面缓存在bfcache中,即使它不将其存储在标准缓存中也是如此。
jQuery会
自动将卸载事件附加到窗口,因此不幸的是,使用jQuery会使您的
页面无法保存在bfcache中以进行DOM保留和
快速前进/后退
。