我正在使用Python + Flask开发我的第一个主要Web应用程序项目,并寻找建议,以便规划基本级别的体系结构。
我不打算重新发明轮子,因此我将使用Flask-login来处理登录管理,并使用基本的Flask会话来获取最基本的会话变量,例如用户ID和自定义会话ID。
默认情况下,Flask会话是基于cookie的,并且基本上只在客户端持久存在。但是,需要定期读取一些会话变量(即用户权限,自定义应用程序配置),并且我觉得在每个页面请求和响应中在cookie中携带所有信息都很尴尬。由于可以通过在登录时引入唯一会话ID在服务器端识别会话,因此可以使用一些服务器端会话变量管理。从数据库读取服务器端的这些数据也感觉不必要的开销。所以,我的问题是,如何在服务器端处理会话变量的最有效方法是什么?也许这可能是基于内存的解决方案,但我担心不同的Flask应用程序请求可以在不共享内存存储的会话数据的不同线程上执行,或者在同时读写的情况下导致冲突。
答案 0 :(得分:1)
你的直觉是正确的,可能不是这样做的。
会话数据应该只是短暂的信息,不会丢失和重新创建太麻烦。例如,用户只需再次登录即可恢复它。
配置数据或服务器上必需的任何其他必须在注销后继续存在的数据不属于会话,应存储在数据库中。
现在,如果你真的需要来轻松地将这些信息保存在客户端,并且如果它丢失则不是太大的问题,那么使用会话cookie来登录/注销状态和永久性其余配置信息的cookie使用寿命很长。
如果信息的大小太大,那么我能想到的唯一选择就是将数据存储/输出状态以外的数据存储在数据库中。