2011-03-16 71 views
3

我有两个问题:Django的缓存会话

1)我想知道是否使用

django.contrib.sessions.backends.cache 

用于存储会话真正提高网站的表现呢?假设有大约25k个并发用户。每个用户进行很多数据库更改(例如浏览器游戏)。差别是否明显?

2)同时使用缓存会话(无数据库):如何检查给定用户是否已登录(不允许多个登录在同一帐户)?

回答

5

重新1.

从我的经验差别是巨大的。 在你的场景中,每次会话被创建或更改 - 这将生成一个数据库写入。每次用户访问一个站点时,都会产生一个db的读数。 将其移出数据库 - 每个请求至少保存一个查询。

这个额外的流量,再加上您的正常应用流量可能会轻易地杀死您的数据库性能。

re。 2.

即使是DB支持会话有以确保用户登录一次,没有明确的方式(阅读所有的会话数据,脱酸,然后过滤是没有一个明确的方式:))做

这可能会使用缓存: 每次用户登录时,检查缓存中是否存在密钥(例如,用户:<user_id>),存储值将是会话ID,如果当前会话不同,则存储一到期旧会话,存储新的会话ID。

但即使这样一个将并不总是工作,有时浏览器标签/窗口共享同样的Cookie(特别是当SESSION_EXPIRE_AT_BROWSER_CLOSE是假 - 默认)和会话是基于cookie的完全。

+0

我明白了,谢谢你的回答! :)至于(2)我决定不实施这个。主要是因为在同一个帐户上多次登录没有问题。不管怎么说,还是要谢谢你! – freakish 2011-03-16 08:04:40