我有两页A和B.流程如下:
>转到A
> javascript Ajaxes一堆内容添加到A,形成A’
>去B
>按[返回]返回A,而不是A’,而不需要所有的Ajaxed内容
有没有人注意到这一点,如果是这样,你如何解决?
如果Chrome在进入B之前缓存A状态,并且在后面再现A’,那将是可以接受的.如果Chrome只是将A的整体重新加载(包括将其转换为A’的Ajax请求)也是如此.目前的行为,正在加载一个旧的,不完整的版本的A,不是我想要的.
编辑:我知道它正在加载一个缓存的版本,因为服务器没有收到任何新的请求,当我打[返回].
解决方法
这个话题很旧,但以为我会分享我的解决方案.要使Firefox,Chrome和Safari的行为一致,您必须在页面上设置一个卸载处理程序,需要在返回时重新加载,还可以使用缓存清除头.
例
在HTTP头中
缓存控制:必须重新生效,无存储,无缓存,私有
并在javascript的页面
$(window).unload(function(){}); // Does nothing but break the bfcache
阅读更多信息:http://madhatted.com/2013/6/16/you-do-not-understand-browser-history