Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chrome后退按钮:只提供初始页面的缓存版本,没有任何Ajaxed内容_Javascript_Ajax_Caching_Google Chrome - Fatal编程技术网

Javascript Chrome后退按钮:只提供初始页面的缓存版本,没有任何Ajaxed内容

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版本,这不是我想要的 编辑:我知道它正在加载缓存版本,因为当我点击[返回]时,服务器

我有两页,A和B。流程如下:

  • 去参加一个聚会
  • javascript提供了一组要添加到的内容,形成了一个
  • 去B
  • 按[Back]返回A,而不是A',没有所有Ajax内容
是否有其他人注意到了这一点,如果是,您如何修复它

如果Chrome在进入B之前缓存了A'状态,并在后面复制了A',这是可以接受的。如果Chrome只需重新加载整个A(包括将其转换为A的Ajax请求),这也会起作用。当前的行为是加载旧的、不完整的A版本,这不是我想要的


编辑:我知道它正在加载缓存版本,因为当我点击[返回]时,服务器没有收到任何新请求。

嗯,如果您使用的是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,