在所有浏览器中优化 bfcache 的最重要方法是永远不要使用unload事件。
该事件对浏览器来说是有问题的,因为它早于 bfcache 并且互联网上的许多页面在事件触发unload后页面将不会继续存在的(合理)假设下运行。unload这提出了一个挑战,因为其中许多页面也是在假设用户离开时会触发事件的假设下构建的unload,这不再是真的(并且很长一段时间都不是真的)。
因此浏览器面临两难境地,他们必须在可以改善用户体验的东西之间做出选择,但也可能会冒着破坏页面的风险。
如果 Chrome 和 Firefox 添加了侦听器,则选择使页面不符合 bfcache 的条件unload,这样风险较小,但也会取消许多页面的资格。Safari 将尝试使用unload事件侦听器缓存某些页面,但为了减少潜在的损坏,它不会unload在用户导航离开时运行该事件,这使得该事件非常不可靠。
不要使用unload事件,而是使用pagehide事件。该事件在当前触发事件pagehide的所有情况下触发,并且在将页面放入 bfcache 时也会触发。unload
事实上,谷歌Lighthouse v6.2.0已经添加了一个no-unload-listeners audit,如果页面上的任何 JavaScript(包括来自第三方库的 JavaScript)添加了unload事件监听器,它将警告开发人员。
您已成功复制微信号
leishi010
打开微信添加好友?
确定