onbeforeunload处理程序真的会阻止我的页面缓存吗?
Would an onbeforeunload handler really stop my page caching?
2007年,Patrick Hunlock在一篇题为《用Javascript掌握返回按钮》的文章中声称,仅仅在页面中包含一个onbeforeunload
处理程序就会停止缓存。(我猜是浏览器缓存。)他对此非常强调:
只要有一个unbeforeunload事件处理程序——不管它是否实际做任何事情,不管你是否产生一个对话框,即使整个函数声明完全由{}组成——只要定义一个事件处理程序将阻止页面被缓存——永远。
事实上,即使您允许页面缓存,页面也会被缓存不被缓存。有一个onbeforeunload事件意味着页面将被加载每次访问都要重建。 javascript将重新运行,服务器端脚本将重新运行,页面将被构建,就像用户是第一次点击它,即使用户是第一次点击"后退"或"前进"按钮即可进入页面。
有趣的是,除了一两个人提到了汉洛克的帖子,我找不到任何其他地方提到这一点。有人能解释一下这个问题吗?这是真的吗,或者我可以安全地使用这个事件吗?
对于考古学家来说,这是Firefox 1.5中引入的一个特性。
注意不要混淆缓存和浏览器历史记录(也称为存储)-页面元素可以同时包含在两者中。如果期望的行为是强迫浏览器重新加载HTML页面从服务器,如果使用前进和后退导航按钮(例如,因为页面显示敏感信息,或内容被改变使用Javascript或Ajax调用),那么应该使用Cache-control no-store
-或者更好地使用no-store
和no-cache
。
进一步阅读:
- 为什么不缓存和不存储都应该在HTTP响应中使用?
- OWASP:浏览器缓存漏洞测试
相关文章:
- 有没有一种方法可以使用gull来修改我的index.thml,以防止CSS缓存
- 有没有任何方法可以使用js清除浏览器缓存,至少是我的域相关文件
- 缓存以使我的网站离线是't工作
- Cloudflare 缓存我的 HTML5 游戏的 JavaScript 文件,因此游戏无法加载
- 我的网站存在火狐缓存问题
- 我的资产管道中奇怪的 JavaScript 缓存
- GZIPping和缓存我的JS和CSS文件的东西
- 浏览器缓存与我的 javascript 冲突,以将值添加到列表框
- 在我的 Web 应用程序上模拟浏览器缓存
- 我如何知道用户何时清除我的应用程序的缓存
- 如何防止在 django 模板中缓存我的 Javascript
- 谷歌没有正确缓存我的AJAX可抓取应用程序
- Javascript或jQuery正在缓存我的Javascript变量.如何重置此项
- 如何缓存我的javascript文件以提高性能
- 停止Chrome缓存我的JS文件
- 缓存我的脚本的Chrome(可能还有其他浏览器)包括
- Chrome在Android上缓存我的视频清单中列出,但不能离线播放
- 如何阻止IE缓存我的XHR
- 如何防止缓存我的Javascript文件
- 如何在用户的浏览器中缓存我的网站