“会话”存储

在存储你的“会话”数据时,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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值