使用django会话存储用户信息是否有任何陷阱?在什么情况下我应该避免使用这种机制?
答案 0 :(得分:3)
“会话框架允许您在每个站点访问者的基础上存储和检索任意数据”,所以如果您对此感到满意(存储的基于字典的信息仅适用于该会话的特定用户,如只要你不访问所选的会话后端,否则就完全可以了。
当我使用基于缓存的会话后端(缓存失效,数据持久性,将待缓存数据分发到多个服务器,类似的东西)时,我看到的唯一陷阱可能会被引入,特别是当存储时数据与主存储(数据库)不同 - 比如使用memcached或基于文件的缓存。
答案 1 :(得分:2)
在会话中存储数据让我感到惊讶的一件事是,当用户在两个浏览器中打开网站时(例如,一次在他们的移动设备上,一次在他们的桌面上),会发生(或不会发生)。
例如,我遇到了性能问题,并决定通过减少对数据库的点击来修复它。该网站的前提是移动应用程序用于查看数据,但您通过桌面网站进行更改。
有这样的逻辑:
if not session_data then:
fetch_data_and_put_in_session
else:
get_session_data_ftw()
如果用户在其移动设备上登录,则会从数据库创建会话数据。如果他们然后使用他们的浏览器对数据进行更改,则他们无法在移动设备上查看它们直到会话过期。