“会话”存储

在存储你的“会话”数据时,Rails 有很多选项。每个选项即好也不好。我们先列出选
项的清单,然后再比较它们。
“会话”存储机制使用DEFAULT_SESSION_OPTIONS 哈希表的:database_manager 参数设
置。其它的选择是:
1、:database_manager => CGI::Session::Pstore 这是Rails 使用的缺省“会话”存储
机制。每个“会话”的数据以Pstore 格式存储在一个文本文件中。这种格式以Marshal 形式
保存对象,它允许任何的可序列化对象被存储在“会话”中。这种机制支持额外的配置选
项:prefix 和:tmpdir。
2、:database_manager => CGI::Session::ActiveRecordStore 使用ActiveRecordStore
你可以存储你的“会话”数据在你的应用程序的数据库中。按下面的DLL 创建个名字为session
的表(这是MySQL 版本—你可能必须对你的数据库引擎做适当调整)。这个存储使用YAML 来序
列化它的对象。
create table sessions (
id int(11) not null auto_increment,
sessid varchar(255),
data text,
updated_at datetime default NULL,
primary key(id),
index session_index (sessid)
);
sessid 列持有“会话”id—它的缺省长度为32 个字符。最好是索引这个列,以便于用
它查找“会话”数据。如果你添加created_at 和update_at 名字的列,“活动记录”将自动
在session 表内标记此行的“时间戳”—稍后我们会看到这个主意有多么的好!
3、:database_manager => CGI::Session::DrbStore DRb 是个协议,它允许Ruby 处理
一个网络连接上的共享对象。使用DrbStore 数据管理,Rails 可存储“会话”数据在一个DRb
服务器上(你可以在外部的web 应用程序上管理它)。你运行在分布式的服务器上的应用程序
的多个实例可以访问同一个DRb 存储。用于Rails 的简单DRb 服务以包括在Rails 中了。DRb
使用Marshal 来序列化对象。
4、:database_manager => CGI::Session::MemCacheStore memcached 是个自由变量,
缓存来自于Danga Inteactive 的分布式对象。Rails MemCacheStore 使用Michael Granger
的Ruby 接口来对存储的“会话” memcached 。Memcached 比其它选择要复杂很多,或许你
对它感兴趣就是因为你的站点已经使用了它。
5、:database_manager => CGI::Session::MemoryStore 这个选项存储“会话”数据在
应用程序的内存中。它不需要烦人的序列化,任何对象都被存储在内存“会话”中。像我们
稍后会看到的,对于Rails 应用程序来说,这通常不是个好主意。
6、:database_manager => CGI::Session::FileStore “会话”数据被存储在文本文件
中。对于Rails 应用程序来说它没有什么用处,因为它的内容必须是字符串。这种机制支持
额外的配置选项:prefix,:suffix 和:tempdir。
如果你的应用程序不需要“会话”(也不使用flash,它也用于存储“会话”数据),你
可以关闭Rails 的“会话”处理,通过下面设置
::ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS = false

你可能感兴趣的:(应用服务器,memcached,网络应用,cgi,Rails)