在`Rack :: Session :: Cookie`上使用`Rack :: Session :: Pool`

时间:2012-11-26 22:06:31

标签: ruby session cookies rack pool

Rack::Session::PoolRack::Session::Cookie的不同用例有哪些?

据我所知(如果我错了,请纠正我):

  • Cookie所有会话密钥:值对直接存储在Cookie中(编组)
  • Pool仅在Cookie中存储ID,并在@pool
  • 内维护会话哈希的其余部分

那么:选择一个而不是另一个的含义/原因是什么?什么是@pool?为什么Pool需要从Cookie公开不同的公共接口?为什么文档如此缺乏?

1 个答案:

答案 0 :(得分:14)

你是对的,Session::Cookie编组并在cookies中存储会话。

Session::Pool会将会话保留在内存中。

Pool有一些优势:

- faster, no marshaling needed 
- you can keep any objects with it(read ones that can not be marshaled)

但是当您重新启动应用时,所有会话都会丢失。

使用Cookie代替您将以编组的价格重新启动持续会话。

替代方案 - Session::MemcacheSession::Mongo