我有两页,A和B.流程如下:
有没有人注意到这一点,如果有,你如何解决?
如果Chrome在转到B之前缓存A'状态,并且在返回时再现A',那将是可以接受的。如果Chrome只是重新加载了整个A(包括将其转换为A'的Ajax请求),那也是可行的。当前的行为,即加载旧的,不完整的A版本,并不是我想要的。
编辑:我知道它正在加载缓存版本,因为当我点击[返回]时服务器没有收到任何新请求。答案 0 :(得分:5)
这个话题很老但我想我会分享我的解决方案。要使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
答案 1 :(得分:1)
我知道这个话题很老但是解决这个问题的方法并不容易找到,我只是浪费了几个小时来解决它。这两行解决了Chrome的问题:
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
答案 2 :(得分:0)
好吧,如果您使用xhr请求而不是隐藏框架,则后退和前进按钮不会与xhr请求绑定