1

在两个控制器动作之间存储数据的最佳方式是什么?

例子:

  1. 我有一大堆帖子 ID,["2907", "2334", "2309",.... N]我在第一步确认并进入第二步进行另一个控制器操作。
  2. 另一个控制器动作渲染数据(日历,组),我在日历中选择日期,选择组并创建另一个日期时间数据数组确认并转到另一个动作
  3. 另一个操作使用此数组和帖子 id 数组进行操作,并在确认后再次呈现我要保存的数据的日期,数据在 DB 中安全并从会话中清除所有数组。

我将所有数组存储在会话中的动作之间,例如session[:posts_ids] = params[:posts_ids]flash[:date_day] ||= params[:date_day]。我认为它不适用于真正的大数据阵列。可能是将其存储在 redis 中的最佳方式?

4

1 回答 1

4

这在很大程度上是基于意见的,但我认为您的两个最佳选择是:

  1. 使用 Redis、Memcached 或其他一些服务器端缓存解决方案将对象存储在内存中,直到您需要它们为止。
  2. 使您的应用程序更加 ajax-y,并在客户端执行这些数组的所有选择和临时持久性。

会话大小受基础策略的限制,而不是一般会话的硬限制。CookieStore 是默认设置,将允许大约 4k 的数据,因为浏览器 cookie 仅限于该大小。如果您使用数据库支持的会话,那么您只会受到数据库服务器的限制。

您还应该记住,使用会话在请求之间存储数据不是非常 RESTful。

于 2013-10-08T14:06:07.040 回答