我有以下情况:
页面 A:/something/new
回帖到:/something/create
重定向到页面 B:/something/edit
到目前为止,一切正常。现在,/something/edit 是一个允许您通过 AJAX 执行大量操作的页面,因此它开始时是空的,并且当您使用它时,它会变得“更完整”,可以这么说。如果你在任何时候重新加载,你会得到一切,由服务器呈现。
但是,如果在被重定向并修改页面后,您再次点击 Back 然后 Forward,浏览器(至少 Chrome)不会再次点击服务器(甚至没有可能导致 304 的 Etag 检查,什么都没有),它只是从缓存中加载页面 B,它显示为空,并且可能会很混乱......
在第一次渲染页面 B 时,服务器会使用以下标头进行响应:
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 或任何类似的东西可能会打扰。此外,如果我正确解释“缓存控制”(不过我对它不是很有经验),它似乎是说不要缓存,永远......
有什么办法可以避免这种行为,并让浏览器在 Back/Forward 上再次访问服务器?
谢谢!
丹尼尔