2012-11-26 33 views
14

Các trường hợp sử dụng khác nhau của Rack::Session::PoolRack::Session::Cookie là gì?Sử dụng `Rack :: Session :: Pool` trên` Rack :: Session :: Cookie`

Theo như tôi hiểu (đúng cho tôi nếu tôi sai):

  • Cookie cửa hàng tất cả phiên phím: cặp giá trị trực tiếp trong cookie (marshalled)
  • Pool chỉ lưu giữ một id trong cookie và duy trì phần còn lại của phiên băm trong @pool

Vì vậy, ý nghĩa/lý do để chọn cái nào so với cái kia? @pool là gì? Tại sao Pool cần hiển thị giao diện công khai khác với Cookie? Tại sao tài liệu này thiếu?

Trả lời

14

Bạn nói đúng, Session::Cookie điều chỉnh tỷ lệ và lưu trữ các phiên trong cookie.

Session::Pool thay vì giữ phiên trong bộ nhớ.

Pool có một số ưu điểm:

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

Nhưng khi bạn khởi động lại ứng dụng của bạn tất cả các phiên bị mất.

Với Cookie thay vào đó bạn sẽ có các phiên khởi động lại liên tục với mức giá của marshaling.

Alternatives - Session::Memcache, Session::Mongo

+1

Kệ :: phiên :: Moneta: http://www.rubydoc.info/github/minad/moneta/Rack/Session/Moneta cũng cung cấp một giao diện cửa hàng phiên trừu tượng đến một nhiều cửa hàng khóa/giá trị lớn –

Các vấn đề liên quan