【问题标题】:Doubts regarding Server side session using caching or cookie based sessions关于使用缓存或基于 cookie 的会话的服务器端会话的疑问
【发布时间】:2012-02-14 22:07:20
【问题描述】:

我对 Web 开发很陌生。我正在使用 Flask、Sqlalchemy 和 Postgresql。

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

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

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

我的怀疑有效吗?

所以我的其他问题是:

  1. 我是否在某种程度上是正确的,可以避免在每个请求中获取一些会话范围的数据,而不会陷入过早优化的陷阱? 要么 以后有需要时我是否应该担心这个问题,现在只专注于创建一个可以工作的应用程序?

  2. 基于 cookie 的会话的替代方案是服务器端会话,可以使用 redis 或 memcache 来完成。 Beaker 库在哪里出现?它是一个独立的东西还是与redis或memcache一起使用?

【问题讨论】:

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

标签: python sqlalchemy server-side session-cookies flask


【解决方案1】:

大多数浏览器都支持最多 4096 字节的 cookie。 (Source)

如果您想保存的数据超出此范围,则应使用 Redis 或 Memcache 等服务器端会话后端。用 Redis 或 Memcache 接口替换 Flask 的默认 cookie 会话接口非常容易。阿明有一个great snippet for redis。如果您更喜欢 memcache,则可以用相同的 memcache 方法替换 sn-p 的 redis 内容。 ;)

【讨论】:

    猜你喜欢
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2020-12-22
    • 2018-06-23
    相关资源
    最近更新 更多