Chrome后退按钮:仅提供初始页面的缓存版本,没有任何Ajaxed内容
Chrome back button: only giving cached version of initial page, without any Ajaxed content
我有两页,A和B。流程如下:
- 转到 A
- javascript Ajaxes 一堆内容添加到 A 中,形成 A'
- 转到 B
- 按[返回]返回到A,而不是A',没有所有Ajaxed内容
有没有人注意到这一点,如果是,你如何解决它?
如果Chrome在转到B之前缓存了A'状态,并在返回时复制A',那是可以接受的。如果Chrome只是重新加载整个A(包括将其转换为A'的Ajax请求),那也可以工作。当前的行为,即加载旧的、不完整的 A 版本,不是我想要的。
编辑:我知道它正在加载缓存版本,因为当我点击[返回]时服务器没有收到任何新请求。
这个话题很旧,但我想我会分享我的解决方案。要使Firefox,Chrome和Safari的行为保持一致,您必须在返回时需要重新加载的页面上设置卸载处理程序,并使用缓存破坏标头。
例
在 HTTP 标头中
Cache-Control: must-revalidate, no-store, no-cache, private
并在页面的javascript中
$(window).unload(function(){}); // Does nothing but break the bfcache
阅读此处了解更多信息:http://madhatted.com/2013/6/16/you-do-not-understand-browser-history
我知道
这个话题很旧,但这个问题的解决方案并不容易找到,我只是浪费了几个小时来解决它。这两行为我解决了Chrome问题:
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
好吧,如果您使用的是 xhr 请求而不是隐藏帧,则后退和前进按钮不会与 xhr 请求绑定
相关文章:
- 浏览器是否持久缓存脚本元素的编译版本
- Chrome没有加载最新版本的web工作程序脚本(运行缓存版本)
- 上载图像的新版本并避免缓存
- w3c验证器检查站点的缓存版本
- 使用 createJS 获取对容器缓存版本的引用
- Cordova应用程序自动同步/更新Web内容(.js文件),如果更新版本可用,否则使用缓存版本
- 调试时显示的较旧(可能是缓存的)版本的 javascript 文件
- 如何确保用户运行的是最新版本的应用程序,而不是缓存的版本
- Chrome后退按钮:仅提供初始页面的缓存版本,没有任何Ajaxed内容
- Javascript:检测是否缓存了请求的文件,如果存在较新版本,则删除缓存
- Microsoft Edge和IE上的Twitter Bootstrap Modal缓存(最新版本)
- 强制Ajax获取缓存版本
- 自动javascript版本控制,避免浏览器缓存清理
- 缓存清单忽略本地版本
- Javascript版本控制以避免缓存,这些实践的区别
- 缓存书签,但总是加载最新版本
- 控制Javascript文件的版本以防止不必要的缓存清理
- 浏览器缓存-版本文件-但如果浏览器使用旧版本怎么办?
- 随机版本号与图像强制缓存
- Chrome开发工具缓存旧版本的JavaScript文件