Rack::Session::Pool和Rack::Session::Cookie的不同用例有哪些?
据我所知(如果我错了,请纠正我):
Cookie
将所有会话密钥:值对直接存储在Cookie中(编组)Pool
仅在Cookie中存储ID,并在@pool
那么:选择一个而不是另一个的含义/原因是什么?什么是@pool
?为什么Pool
需要从Cookie
公开不同的公共接口?为什么文档如此缺乏?
答案 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::Memcache,Session::Mongo