当前位置:  开发笔记 > 编程语言 > 正文

使用Django进行站点范围缓存 - 注销时受密码保护的页面出现问题

如何解决《使用Django进行站点范围缓存-注销时受密码保护的页面出现问题》经验,为你挑选了1个好方法。

我最近在我的Django应用程序上使用memcached实现了全站点缓存,我将TTL设置为大约500秒,并在Web应用程序的其他部分实现每个视图缓存.

我遇到的问题是,当用户注销时,因为它是一个表单帖子,网站的行为符合预期,但是如果他们然后转到网站的密码保护部分,则应用程序的行为就像他们仍然登录一样,除非他们点击"刷新".我是新来的缓存,并想知道我是否可以做任何聪明的事情来阻止这种情况?



1> Mikhail Koro..:

我遇到了类似的问题.标准的Django方法是为经过身份验证的用户禁用缓存.

#settings.py
CACHE_MIDDLEWARE_ANONYMOUS_ONLY=True

如果不同的用户看到不同的页面(例如:他们的用户名)并且您不能拥有一个版本,它可以正常工作.

但是,如果页面只有2个版本:对于经过身份验证的用户和其他用户,那么完全禁用经过身份验证的用户的缓存并不好.我写了一个应用程序,除此之外,还可以在这种情况下微调缓存.

更新.

顺便说一句:您提到当您点击"刷新"时,会收到正确版本的页面.这意味着问题是客户端缓存(Expires头或E-tag),而不是服务器缓存.

要防止客户端缓存(如果在同一URL下有多个版本的页面,则必须这样做)使用@cache_control(must_revalidate=True)装饰器.

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有