2012-11-26 63 views
14

Rack::Session::PoolRack::Session::Cookie有什麼不同的用例?在Rack :: Session :: Cookie上使用`Rack :: Session :: Pool`

據我瞭解(糾正我,如果我錯了):

  • Cookie所有會話密鑰:直接值對的cookie(整理)內
  • Pool只存儲一個id在cookie中,並且保持會話中其餘部分的散列在@pool

因此:選擇一個優於另一個的含義/原因是什麼?什麼是@pool?爲什麼Pool需要公開Cookie的不同公共接口?爲什麼文檔如此缺乏?

回答

14

你是對的,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::MemcacheSession::Mongo

+1

架::會議::莫尼塔:http://www.rubydoc.info/github/minad/moneta/Rack/Session/Moneta還提供了一個抽象的會話存儲接口一個各種各樣的鑰匙/價值商店 –

相關問題