- Rack::Session::Cookie
- Rack::Session::Memcache
- Rack::Session::Pool
と思っていたら、どうやら同じ悩みを抱える方が海外にもいたようです。
http://stackoverflow.com/questions/13573968/using-racksessionpool-over-racksessioncookie
上記サイトと、僕が幾つかのサイトで調べた結果をまとめると、つまりこういうことですかね。
- Rack::Session::Cookie
→ セッションID、及び全てのキー・バリューのペアをCookieに保存する。 - Rack::Session::Pool
→ セッションIDのみクッキーに保存する。データはRack::Session::Poolのインスタンス変数@poolに、メモリ上で永続化の処理をせず(つまりそのまま)保存される。そのため高速で動作し、かつ保存できるオブジェクトに(永続化しないため)制約がない。ただし、アプリケーションを再起動した場合にはデータは全て失われる。 - Rack::Session::Memcache
→ セッションIDのみクッキーに保存する。データはmemcachedにより保存するため、当然memcachedは導入済みである必要がある。おそらく、永続化の処理は入るため保存できるデータの制約はRack::Session::Cookieと一緒と思われる。高速で動作する。速度的にはRack::Session::Poolとほぼ同等(永続化の操作の分わずかに劣ると思うが)。アプリケーションを再起動してもデータは保持される。
※2014/05/02 Rack::Session::Poolについて、データの保存先の記述を修正しました。(アプリケーションオブジェクトのインスタンス変数 → Rack::Session::Poolのインスタンス変数)
0 件のコメント:
コメントを投稿