2

我有以下情况:

页面 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 上再次访问服务器?

谢谢!
丹尼尔

4

1 回答 1

0

我会调查这里发布的答案。

单击后退按钮时是否存在跨浏览器 onload 事件?

我刚刚更改了这个答案,因为我所指的一些实用程序已经很旧并且没有维护,这不是一个有用的答案。

于 2012-08-06T23:47:31.030 回答