Javascript Chrome后退按钮:只提供初始页面的缓存版本,没有任何Ajaxed内容
我有两页,A和B。流程如下:Javascript Chrome后退按钮:只提供初始页面的缓存版本,没有任何Ajaxed内容,javascript,ajax,caching,google-chrome,Javascript,Ajax,Caching,Google Chrome,我有两页,A和B。流程如下: 去参加一个聚会 javascript提供了一组要添加到的内容,形成了一个 去B 按[Back]返回A,而不是A',没有所有Ajax内容 是否有其他人注意到了这一点,如果是,您如何修复它 如果Chrome在进入B之前缓存了A'状态,并在后面复制了A',这是可以接受的。如果Chrome只需重新加载整个A(包括将其转换为A的Ajax请求),这也会起作用。当前的行为是加载旧的、不完整的A版本,这不是我想要的 编辑:我知道它正在加载缓存版本,因为当我点击[返回]时,服务器
- 去参加一个聚会
- javascript提供了一组要添加到的内容,形成了一个
- 去B
- 按[Back]返回A,而不是A',没有所有Ajax内容
编辑:我知道它正在加载缓存版本,因为当我点击[返回]时,服务器没有收到任何新请求。嗯,如果您使用的是xhr请求而不是隐藏帧,“后退”和“前进”按钮与xhr请求不匹配我知道这个主题很老,但这个问题的解决方案并不容易找到,我只是浪费了几个小时来解决它。这两条线为我解决了Chrome问题:
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
此主题很老,但我想与大家分享我的解决方案。为了让Firefox、Chrome和Safari保持一致,您必须在返回时需要重新加载的页面上设置卸载处理程序,并使用缓存破坏头
范例
在HTTP头中
缓存控制:必须重新验证、无存储、无缓存、专用
在页面的javascript中
$(window).unload(function(){}); // Does nothing but break the bfcache
请阅读此处了解更多信息:各个页面的缓存头是什么样子的?@QuintinRobinson:对不起,缓存头是什么?您的服务器应该通过缓存控制头强制执行应用于页面的缓存策略。我真诚地建议你仔细阅读这件事,这里有一个资源:@QuintinRobinson:我会去研究他们;谢谢不,看起来这是.net。它将根据您使用的语言/框架进行更改。基本上,您只需要设置缓存控制:no store
HTTP头。例如,如果您使用的是rails,