2012-11-26 13 views
14

Quali sono i diversi casi d'uso di Rack::Session::Pool e Rack::Session::Cookie?Utilizzo di `Rack :: Session :: Pool` su` Rack :: Session :: Cookie`

Per quanto ho capito (correggetemi se sbaglio):

  • Cookie negozi tutto la chiave di sessione: coppie di valori direttamente all'interno del biscotto (schierato)
  • Pool memorizza solo un id nel cookie e mantiene il resto dell'hash della sessione entro @pool

Quindi: quali sono le implicazioni/i motivi per scegliere l'uno rispetto all'altro? cos'è @pool? Perché è necessario che Pool esponga un'interfaccia pubblica diversa da Cookie? Perché la documentazione è così carente?

risposta

14

Hai ragione, il marshalling Session::Cookie e memorizza le sessioni nei cookie.

Session::Pool conserva invece le sessioni in memoria.

Pool ha alcuni vantaggi:

- faster, no marshaling needed 
- you can keep any objects with it(read ones that can not be marshaled) 

Ma quando si riavvia l'app tutte le sessioni sono persi.

Con Cookie invece si avranno sessioni di riavvio-persistenti al prezzo del marshalling.

Alternative - Session::Memcache, Session::Mongo

+1

Rack :: sessione :: Moneta: http://www.rubydoc.info/github/minad/moneta/Rack/Session/Moneta inoltre fornisce un'interfaccia astratta negozio sessione a un grande varietà di negozi di valore/chiave –

Problemi correlati