2012-11-26 15 views
14

Jakie są różne przypadki użycia Rack::Session::Pool i Rack::Session::Cookie?Używanie `Rack :: Session :: Pool` przez` Rack :: Session :: Cookie`

O ile mi zrozumieć (poprawcie mnie jeśli się mylę):

  • Cookie sklepy wszystko klucz sesji: pary wartości bezpośrednio w pliku cookie (marshalled)
  • Pool przechowuje tylko id w pliku cookie i zachowuje resztę skrótu sesji w zakresie @pool

A więc: jakie są konsekwencje/powody wyboru jednego z nich? co to jest @pool? Dlaczego Pool trzeba odsłonić inny interfejs publiczny od Cookie? Dlaczego brakuje tej dokumentacji?

Odpowiedz

14

Masz rację, Session::Cookie sesje marshalingowe i sesyjne w ciasteczkach.

Session::Pool zamiast tego utrzymuje sesje w pamięci.

Pool ma kilka zalet:

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

Ale po ponownym uruchomieniu aplikacji wszystkie sesje są tracone.

W zamian za to Cookie otrzymasz sesje z ponownym uruchomieniem po cenie transakcji marshallingu.

Alternatywy - Session::Memcache, Session::Mongo

+1

Rack :: Session :: Moneta: http://www.rubydoc.info/github/minad/moneta/Rack/Session/Moneta zapewnia również abstrakcyjny interfejs sklepu sesji z duża różnorodność magazynów kluczy/wartości –

Powiązane problemy