我有以下情况:
A页:/something/new
回发到:/something/create
重定向到页面 B:/something/edit
到目前为止一切正常。现在,/something/edit 是一个允许您通过 AJAX 做很多事情的页面,所以它开始时是空的,并且当您使用它时它会变得“更丰富”,可以这么说。如果您随时重新加载,您会取回所有内容,由服务器呈现。
但是,如果在被重定向并修改页面后,您再次点击“后退”和“前进”,浏览器(至少是 Chrome)不会再次访问服务器(即使是 Etag 检查也不会导致304,什么都没有),它只是从缓存中加载页面 B,页面 B 显示为空,并且可能非常困惑...
当第一次呈现页面 B 时,服务器响应以下 header :
Cache-Control:must-revalidate, private, max-age=0
Connection:Keep-Alive
Content-Length:18577
Content-Type:text/html; charset=utf-8
Date:Thu, 02 Aug 2012 20:19:59 GMT
Server:WEBrick/1.3.1 (Ruby/1.9.3/2012-04-20)
Set-Cookie: (redacted)
X-Miniprofiler-Ids:["ma2x1rjc0kgrijiug5dj","nnmovj2wz1lux85jwhd3"]
X-Request-Id:2dd3fa62799beadc1b39b8db1aa5f45f
X-Runtime:0.245014
X-Ua-Compatible:IE=Edge
我没有看到 Etag 或任何可能令人烦恼的类似内容。另外,如果我正确地解释了“缓存控制”(虽然我对它不是很有经验),它似乎是在说不要缓存,永远 ...
有什么办法可以避免这种行为,让浏览器在后退/前进时再次访问服务器?
谢谢!
丹尼尔
最佳答案
我会调查此处发布的答案。
Is there a cross-browser onload event when clicking the back button?
我刚刚更改了这个答案,因为我提到的一些实用程序已经很旧并且没有维护,这不是一个有用的答案。
关于ruby-on-rails-3 - 导轨 3 : How to prevent the browser from loading a page from cache on back/forward navigation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11785174/