禁用后退按钮的浏览器缓存?

时间:2013-09-05 18:51:10

标签: python firefox caching tornado

这是我从Python / tornadoweb尝试过的:

    self.set_header("Cache-Control","no-cache, must-revalidate, max-age=0")
    self.set_header("Expires","Mon, 26 Jul 1997 05:00:00 GMT")

这是我第一次加载页面时从firebug中看到的内容:

Cache-Control   no-cache, must-revalidate, max-age=0
Content-Length  1715
Content-Type    text/html; charset=UTF-8
Etag    "e55dc7115d80aa09b470510ababb3515706f4a61"
Expires Mon, 26 Jul 1997 05:00:00 GMT
Server  TornadoServer/2.3
Set-Cookie  xsfr=5b7f3cf86c2e4537acd1bb1749484a5b; Path=/

然而,当我按BACK按钮返回原始URL时,我得到了页面的缓存版本!不会从服务器重新获取该页面。结果是它包含无效的隐藏表单值。无论用户如何填写表单,都无法处理。

问题可以在firefox和chrome上重现,但不能从Internet Explorer中重现。

那么,如果按下后退按钮,如何强制firefox和chrome禁用缓存并重新加载页面?

1 个答案:

答案 0 :(得分:0)

我不知道你是否解决了这个问题,但昨晚我遇到了同样的问题。 This回答在某种程度上帮助了我。我通过设置标头和清除用户cookie来解决它。

以下是我所做的一切:

class BaseHandler(tornado.web.RequestHandler):

    def set_default_headers(self):
        self.set_header('Cache-Control', 'no-cache, no-store, must-revalidate')
        self.set_header('Pragma', 'no-cache')
        self.set_header('Expires', '0')

现在是SignOut处理程序:

class SignOut(BaseHandler):

    def get(self):
        self.clear_cookie("user")
        self.redirect('/')

"用户"是cookie集的名称。