我有两个问题:
1) 我想知道是否使用
django.contrib.sessions.backends.cache
存储 session 真的可以提高网站的性能吗?假设有大约 25k 并发用户。每个用户进行许多数据库更改(例如浏览器游戏)。差异甚至很明显吗?
2)再次使用缓存 session (没有数据库):如何检查给定用户是否登录(不允许同一帐户多次登录)?
最佳答案
重新 1。
根据我的经验,差异是巨大的。 在您的场景中,每次创建或更改 session 时 - 这将生成一个数据库写入。 每次用户访问站点时,都会生成数据库读取。 将其移出数据库 - 每个请求至少保存一个查询。
这种额外的流量加上您的正常应用流量可能会轻易破坏您的数据库性能。
重新。 2.
即使对于数据库支持的 session ,也没有明确的方法来确保用户登录一次(读取所有 session 数据,对其进行去酸化然后过滤不是一种明确的方法:))
为此,我可能会使用缓存:
每次用户登录时,检查缓存中是否有键(例如用户:
但即使是这个也并不总是有效,有时浏览器选项卡/窗口共享相同的 cookie(尤其是当 SESSION_EXPIRE_AT_BROWSER_CLOSE 为 False - 默认值时)并且 session 仅基于 cookie。
关于python - django 缓存 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5319843/