python - django 缓存 session

标签 python django caching memcached django-sessions

我有两个问题:

1) 我想知道是否使用

django.contrib.sessions.backends.cache

存储 session 真的可以提高网站的性能吗?假设有大约 25k 并发用户。每个用户进行许多数据库更改(例如浏览器游戏)。差异甚至很明显吗?

2)再次使用缓存 session (没有数据库):如何检查给定用户是否登录(不允许同一帐户多次登录)?

最佳答案

重新 1。

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

这种额外的流量加上您的正常应用流量可能会轻易破坏您的数据库性能。

重新。 2.

即使对于数据库支持的 session ,也没有明确的方法来确保用户登录一次(读取所有 session 数据,对其进行去酸化然后过滤不是一种明确的方法:))

为此,我可能会使用缓存: 每次用户登录时,检查缓存中是否有键(例如用户:),存储的值将是 session ID,如果当前 session 不同,则存储一个 - 使旧 session 过期,存储新 session 编号。

但即使是这个也并不总是有效,有时浏览器选项卡/窗口共享相同的 cookie(尤其是当 SESSION_EXPIRE_AT_BROWSER_CLOSE 为 False - 默认值时)并且 session 仅基于 cookie。

关于python - django 缓存 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5319843/

相关文章:

python - Django : 'unicode' object has no attribute 'get'

php - 缓存 CodeIgniter 页面的一部分

mysql - 轮到 `now()` 以获得更好的缓存?

使用 Spring Boot 进行缓存 - Redis 键名中的 ~keys 是什么?

python - 如何在不使用文件的情况下以编程方式将模板文本传递到 View ?

html - 将值从模板传递到 django View

python - 如何在不同的 Xephyr 显示器中打开程序?

django - 在没有表单的情况下从 Django 中的 jQuery 检索 POST 数据

python - CSV的词典列表列表

Python,tkinter : Bind all buttons to <Return>, 那么他们的回调会被触发吗?