bfcache(Back/Forward Cache)可能让用户在前进 / 后退导航时看到的是旧页面状态,从而看不到新部署的代码,但这不是一次重新加载失败,而是浏览器的刻意设计行为。

bfcache 恢复的是“内存快照”,不是“最新资源”

解决方案:

手动检测

window.addEventListener('pageshow', (event) => {
  if (event.persisted) {
    // 来自 bfcache
    console.warn('Restored from bfcache')
  }
})

版本校验

window.addEventListener('pageshow', async (e) => {
  if (e.persisted) {
    const latest = await fetch('/version.json', { cache: 'no-store' })
    const { version } = await latest.json()

    if (version !== __APP_VERSION__) {
      location.reload()
    }
  }
})