2012-01-20 89 views
4

我对web开发很新颖。我正在与Flask,Sqlalchemy和Postgresql合作。有关服务器端会话使用缓存或基于会话的cookie的疑问

据我所知,每一个新的请求都像是程序的一个新线程。新的sqlalchemy会话是使用我们管理我们的数据库操作并返回响应而创建的。之后,新的线程也关闭,连接返回到池。

我登录一个用户并获取用户orm对象中的所有用户数据。我将它存储在使用cookie的flask会话变量中。现在我还想为整个用户会话的跨度保存一些其他用户相关数据而不是请求。我怀疑将所有数据存储在cookie中的原因有两个:

1. Unnecessary data travel back and forth. 
2. data can be read easily. 

我的怀疑是否有效?

所以我的其他问题是:

  1. 我说得对不对在一定程度上避免让每个请求中一些会话范围内的数据没有进入过早优化的陷阱? 或 当我需要时,我应该担心这一点,现在只专注于创建一个工作的应用程序?

  2. 基于cookie的会话的替代方案是服务器端会话,可以通过使用redis或memcache来完成。烧杯库在哪里进入?它是独立的东西,还是与redis或memcache结合使用?

+0

烧杯是memcached的python包装。它也支持服务器端会话,所以只需使用烧杯。 –

回答

1

大多数浏览器支持高达4096字节的cookie。 (Source

如果您想要比此节省更多,则应该使用服务器端会话后端(如Redis或Memcache)。使用Redis或Memcache界面替换Flask的默认cookie会话界面非常容易。有Armin的great snippet for redis。如果你使用相同的memcache方法,你可以使用prefere memcache来替换代码片段的redis内容。 ;)