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

在Django中使用会话

如何解决《在Django中使用会话》经验,为你挑选了1个好方法。

我在Django中使用会话来存储登录用户信息以及一些其他信息.我一直在浏览Django会话网站,但仍然有一些问题.

来自Django网站:

默认情况下,Django将会话存储在您的数据库中(使用该模型 django.contrib.sessions.models.Session).虽然这很方便,但在某些设置中,将会话数据存储在其他地方的速度更快,因此可以将Django配置为在文件系统或缓存中存储会话数据.

也:

对于持久性缓存数据,请设置 SESSION_ENGINEdjango.contrib.sessions.backends.cached_db.这使用直写高速缓存 - 每次写入高速缓存也将写入数据库.如果数据尚未存在于缓存中,则会话只读使用数据库.

有一个很好的经验法则可以使用哪一个?cached_db似乎总是一个更好的选择,因为最好的情况是,数据在缓存中,最坏的情况是它在数据库中无论如何都是如此.一个缺点是我必须设置memcached.

默认情况下,SESSION_EXPIRE_AT_BROWSER_CLOSE设置为False,这意味着会话cookie将存储在用户的浏览器中SESSION_COOKIE_AGE.如果您不希望每次打开浏览器时都必须登录,请使用此选项.

是否可以同时使用,会话在浏览器关闭时到期并给出年龄?

如果value是一个整数,则会话将在该多次不活动后过期.例如,调用 request.session.set_expiry(300)会使会话在5分钟后到期.

什么被认为是"不活跃"?

如果您正在使用数据库后端,请注意会话数据可能会累积在django_session 数据库表中,而Django不会提供自动清除.因此,您的工作是定期清除过期的会话.

这意味着,即使会话过期,我的数据库中仍有记录.究竟哪里会把代码放到"清除数据库"?我觉得你需要一个单独的线程来每隔一段时间(每小时?)浏览数据库并删除任何过期的会话.



1> S.Lott..:

有一个很好的经验法则可以使用哪一个?

没有.

Cached_db似乎永远是一个更好的选择......

没关系.

在某些情况下,有许多Django(和Apache)进程查询公共数据库. mod_wsgi以这种方式允许很多可伸缩性.缓存没有多大帮助,因为会话是在Apache(和Django)进程之间随机分布的.

是否可以同时使用,会话在浏览器关闭时到期并给出年龄?

不明白为什么不.

什么被认为是"不活跃"?

我假设你在开玩笑."活动"是 - 好 - 活动.你懂.发生在Django的东西.Django可以看到的GET或POST请求.还有什么呢?

究竟哪里会把代码放到"清除数据库"?

把它放在crontab或类似的东西.

我觉得你需要一个单独的线程来每隔一段时间(每小时?)通过数据库

忘记线程(请).这是一个单独的过程.一天一天好.你认为你会有多少次?

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