Appearance
页面生命周期与 bfcache:冻结、恢复与副作用管理
主题边界
- 页面生命周期题的重点是理解:页面并不总是被真正销毁,浏览器会根据导航和性能策略冻结、恢复甚至直接从 bfcache 返回。
- 这会直接影响请求重发、事件解绑、资源恢复和页面状态判断。
机制与流程
pagehide/pageshow、visibilitychange、freeze / resume 等事件描述了页面在可见、隐藏、冻结、恢复之间的切换。- bfcache 会把整个页面执行上下文和 DOM 状态缓存起来,后退前进时可直接恢复,显著减少重建成本。
- 页面能否进入 bfcache 受未完成资源、某些监听器和
unload等条件影响。
关键差异
- 普通缓存复用的是资源,bfcache 复用的是整个页面快照和执行上下文。
- 从 bfcache 恢复时,页面不是重新加载,因此很多初始化逻辑不应无脑重跑。
边界条件
- 依赖
unload处理清理在现代浏览器中越来越不可靠,也会直接降低 bfcache 命中率。 - 页面冻结期间网络连接、计时器、媒体和订阅的行为要看具体 API 和浏览器策略。
工程落点
- 返回列表页、表单回填、埋点去重和页面恢复一致性,都与生命周期和 bfcache 命中策略有关。
- 这道题很适合连接到 Storage、KeepAlive 和首屏优化。