【问题标题】:Using `Rack::Session::Pool` over `Rack::Session::Cookie`在 `Rack::Session::Cookie` 上使用 `Rack::Session::Pool`
【发布时间】:2012-11-14 11:14:05
【问题描述】:
Rack::Session::Pool 和 Rack::Session::Cookie 有哪些不同的用例?
据我所知(如果我错了,请纠正我):
-
Cookie 将所有会话键值对直接存储在 cookie 中(编组)
-
Pool 仅在 cookie 中存储一个 id,并在 @pool 中维护其余会话哈希
那么:选择其中一个的含义/原因是什么? @pool 是什么?为什么Pool 需要暴露与Cookie 不同的公共接口?为什么文档这么少?
【问题讨论】:
标签:
ruby
session
cookies
rack
pool
【解决方案1】:
你是对的,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