Skip to content

页面生命周期与 bfcache:冻结、恢复与副作用管理

主题边界

  • 页面生命周期题的重点是理解:页面并不总是被真正销毁,浏览器会根据导航和性能策略冻结、恢复甚至直接从 bfcache 返回。
  • 这会直接影响请求重发、事件解绑、资源恢复和页面状态判断。

机制与流程

  • pagehide / pageshowvisibilitychange、freeze / resume 等事件描述了页面在可见、隐藏、冻结、恢复之间的切换。
  • bfcache 会把整个页面执行上下文和 DOM 状态缓存起来,后退前进时可直接恢复,显著减少重建成本。
  • 页面能否进入 bfcache 受未完成资源、某些监听器和 unload 等条件影响。

关键差异

  • 普通缓存复用的是资源,bfcache 复用的是整个页面快照和执行上下文。
  • 从 bfcache 恢复时,页面不是重新加载,因此很多初始化逻辑不应无脑重跑。

边界条件

  • 依赖 unload 处理清理在现代浏览器中越来越不可靠,也会直接降低 bfcache 命中率。
  • 页面冻结期间网络连接、计时器、媒体和订阅的行为要看具体 API 和浏览器策略。

工程落点

  • 返回列表页、表单回填、埋点去重和页面恢复一致性,都与生命周期和 bfcache 命中策略有关。
  • 这道题很适合连接到 Storage、KeepAlive 和首屏优化。

相关主题