【问题标题】:Play framework session via client cookie通过客户端 cookie 播放框架会话
【发布时间】:2011-06-21 20:53:36
【问题描述】:

在我的应用程序中,我想在内存中保留大量数据,这些数据特定于当前在用户特定会话中访问我的 Web 应用程序的用户。据我所知,play 框架使用 cookie 来存储限制为 4k 的会话数据。我怎样才能拥有更大的会话数据? ehacache memcache 在这里有帮助吗?此会话从用户的最后一次活动开始具有到期时间。

【问题讨论】:

    标签: session cookies playframework


    【解决方案1】:

    如果会话数据是可缓存的,最好将其保存在缓存中,并在用户注销时将其清除。在相关的数据库更新/删除时从数据库中重新加载它。将内容保存在像 memcache 这样的外部缓存中,将帮助您很好地扩展,如果需要,您可以长期迁移到分布式缓存。在Share Nothing 上查看这篇有趣的文章。

    【讨论】:

      【解决方案2】:

      Play 的想法是消除对会话的需求以及将大量信息保存在内存中。内存中方法的问题在于,您将用户绑定到保存其数据的特定服务器,其中 - 由于 play share nothing 方法意味着您可以轻松横向扩展,而无需担心粘滞会话等。

      您的选择是 - 将临时数据存储在临时数据库中,可以通过 userId 或用户会话的其他唯一标识符访问该数据库。该数据库将相当于您的服务器端会话。 - 使用缓存。然而,缓存的想法是,如果信息不在缓存中,则可以从数据库(或其他来源)中检索它。缓存不必保证数据可用。如果在内存缓存(如 ehcache)的情况下,如果您有一组负载平衡的服务器,您可能无法保证所有请求都返回到同一台服务器,因此缓存中的数据可能无法在特定会话的所有服务器。

      您的问题的答案取决于您的用例,但根据您提供的信息,我认为数据库是您最好的方法。

      【讨论】:

      • 你的第一句话有问题,但我不确定是什么。
      • 谢谢。 iPad 自动正确更改,我一定是敲错了字母。
      猜你喜欢
      • 1970-01-01
      • 2013-01-15
      • 2014-07-24
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 2014-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多