Rails 中的数据交互、过滤验证与缓存策略
1. 会话过期处理
在不同的会话存储方式下,会话过期处理方法不同:
- 基于 Active Record 的会话存储 :可使用 sessions 表中的 updated_at 列。通过执行如下 SQL 语句,可删除最近一小时内未修改的所有会话(忽略夏令时变化):
delete from sessions
where now() - updated_at > 3600;
- 基于 DRb 的解决方案 :过期处理在 DRb 服务器进程内进行。可在会话数据哈希表的条目中记录时间戳,并运行一个单独的线程(甚至单独的进程)定期删除哈希表中的条目。
此外,应用程序可在会话不再需要时(如用户注销)调用reset_session来删除会话。
2. Flash:动作间通信
当使用 redirect_to 将控制权转移到另一个动作时,浏览器会生成一个单独的请求来调用该动作。此时,原始动作中设置的实例变量在重定向后的动作代码中不可用,而 flash 可解决这一通信问题。
flash 是一个临时的值存储区,其组织形式类似哈希表,存储在会话数据中。默认情况下,在处理一个请求时存储到 flash
超级会员免费看
订阅专栏 解锁全文
24

被折叠的 条评论
为什么被折叠?



