onbeforeunload处理程序真的会停止我的页面缓存吗?

And*_*lly 5 javascript caching javascript-events

在2007年的一篇名为" 使用Javascript掌握后退按钮 "的帖子中,一位名叫Patrick Hunlock的人声称只在页面中包含一个onbeforeunload处理程序就会停止缓存.(我猜浏览器缓存.)他非常强调它:

只是拥有一个unbeforeunload事件处理程序 - 无论它是否实际执行任何操作,无论是否生成对话框,即使整个函数声明完全由{}组成 - 只需定义一个事件处理程序将阻止页面被缓存 - 永远.

事实上,即使您允许页面缓存,该页面也不会被缓存.拥有onbeforeunload事件意味着每次访问页面时都会重新构建页面.Javascripts将重新运行,服务器端脚本将重新运行,页面将被构建,就好像用户第一次点击它一样,即使用户只是通过按下后退或前进按钮到达页面.

有趣的是,除了一两个提到Hunlock先生职位的人之外,我在其他任何地方都找不到任何提及.任何人都可以澄清这个问题吗?这是真的吗,还是我能安全地使用那个活动?

rad*_*ast 0

对于考古学家来说,这被记录为Firefox 1.5 中引入的一项功能。

请注意不要将缓存与浏览器历史记录(也称为存储)混淆 - 页面元素可以包含在两者中。如果所需的行为是在使用“前进”和“后退”导航按钮的情况下强制浏览器从服务器重新加载 HTML 页面(例如,因为页面显示敏感信息,或者使用 Javascript 或 Ajax 调用更改内容),则Cache-control no-store应该使用 - 或者更好地同时使用no-storeno-cache

进一步阅读: