Chrome后退按钮:仅提供初始页面的缓存版本,不包含任何Ajaxed内容

Li *_*oyi 15 javascript ajax caching google-chrome

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

  • 去A
  • Ajax Ajaxes将一堆内容添加到A中,形成A'
  • 去B.
  • 没有所有Ajaxed内容,按[Back]返回A,而不是A'

有没有人注意到这一点,如果是这样,你如何解决它?

如果Chrome在转到B之前缓存A'状态,并在回传时再现A',那就可以接受了.如果Chrome只是重新加载了整个A(包括将其转换为A'的Ajax请求),那也是可行的.当前行为,即加载旧的,不完整的A版本,不是我想要的.

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

Jay*_*yer 6

这个话题很老,但我想我会分享我的解决方案.要使Firefox,Chrome和Safari的行为一致,您必须在页面上设置卸载处理程序,以便在返回时重新加载,并使用缓存清除标头.

在HTTP标头中

Cache-Control: must-revalidate, no-store, no-cache, private

并在页面的JavaScript中

$(window).unload(function(){}); // Does nothing but break the bfcache
Run Code Online (Sandbox Code Playgroud)

阅读此处了解更多信息:http://madhatted.com/2013/6/16/you-do-not-understand-browser-history


Jam*_*air 0

好吧,如果您使用 xhr 请求而不是隐藏框架,则后退和前进按钮不会与 xhr 请求相关联