【发布时间】:2014-07-31 11:38:23
【问题描述】:
在 2007 年的一篇名为“Mastering The Back Button With Javascript”的帖子中,Patrick Hunlock 声称只要在页面中包含 onbeforeunload 处理程序就会停止缓存。 (我猜是浏览器缓存。)他对此非常强调:
只要有一个 unbeforeunload 事件处理程序——不管它是否真的做任何事情,不管你是否产生一个对话框,即使整个函数声明完全由 { } 组成——只是 定义一个事件处理程序将阻止页面被缓存——永远。
事实上,即使你允许页面缓存,页面也会 不被缓存。 有一个 onbeforeunload 事件意味着页面将 每次访问时都重新构建。 Javascripts 将重新运行, 服务器端脚本将重新运行,页面将像 用户第一次点击它,即使用户必须 只需点击后退或前进按钮即可打开页面。
有趣的是,除了提到 Hunlock 帖子的一两个人之外,我在其他任何地方都找不到任何提及。任何人都可以澄清这个问题吗?这是真的吗,还是我可以安全地使用该事件?
【问题讨论】:
-
我不知道,但缺乏参考/文档让我觉得这不好。即使它很好用,也不要。使用适当的缓存技术来完成你想要的
-
谢谢伊恩 - 我不是想搞乱缓存,只是想知道我是否会破坏它。
-
如果有卸载或onunloadhandler,当使用后退按钮离开或返回页面时,有很多谷歌引用firefox和safari不使用缓存。这是一个-madhatted.com/2013/6/16/you-do-not-understand-browser-history
-
感谢 kennebec - 非常有趣的参考 FF 和 Safari 中的缓存“将 DOM 的当前状态存储在内存中”,以便在单击后退按钮时重新渲染。它说窗口上的卸载处理程序将破坏该缓存。
-
呵呵,我今天也碰到了那篇“Mastering...”的老文章,然后我也想做一些事实检查(就像问题中一样),然后谷歌就放弃了我就在这儿。 :)
标签: javascript caching dom-events