Rack::Session::Pool和Rack::Session::Cookie有哪些不同的用例?
据我了解(如果我错了,请纠正我):
Cookie
将所有会话键值对直接存储在 cookie 中(编组)Pool
仅在 cookie 中存储一个 id,并在其中维护会话哈希的其余部分@pool
那么:选择一个而不是另一个的含义/原因是什么?什么@pool
?为什么Pool
需要从 暴露不同的公共接口Cookie
?为什么文档如此缺乏?
Rack::Session::Pool和Rack::Session::Cookie有哪些不同的用例?
据我了解(如果我错了,请纠正我):
Cookie
将所有会话键值对直接存储在 cookie 中(编组)Pool
仅在 cookie 中存储一个 id,并在其中维护会话哈希的其余部分@pool
那么:选择一个而不是另一个的含义/原因是什么?什么@pool
?为什么Pool
需要从 暴露不同的公共接口Cookie
?为什么文档如此缺乏?
你是对的,Session::Cookie
在 cookie 中编组和存储会话。
Session::Pool
而是将会话保存在内存中。
Pool
有一些优点:
- faster, no marshaling needed
- you can keep any objects with it(read ones that can not be marshaled)
但是,当您重新启动应用程序时,所有会话都将丢失。
Cookie
相反,您将以编组的价格获得重新启动的持久会话。
替代方案 - Session::Memcache , Session::Mongo