1

2 つのコントローラ アクション間でデータを保存する最良の方法は何ですか?

例:

  1. 私は投稿IDの大きな配列を持ってい["2907", "2334", "2309",.... N]ます。最初のステップでそれを作成し、2番目のステップで別のコントローラーアクションに進みます。
  2. 別のコントローラー アクションはデータ (カレンダー、グループ) をレンダリングします。カレンダーで日付を選択し、グループを選択して、日時データの配列をもう 1 つ作成します。確認して、別のアクションに進みます。
  3. 別のアクションは、この配列と投稿 ID の配列を操作し、確認後に保存するデータを再度レンダリングし、データを DB で安全に保存し、セッションからすべての配列をクリアします。

session[:posts_ids] = params[:posts_ids]とのようなセッションのアクション間のすべての配列を保存しflash[:date_day] ||= params[:date_day]ます。本当に大きなデータ配列ではうまくいかないと思います。redis に保存する最良の方法でしょうか?

4

1 に答える 1

4

これは主に意見に基づいていますが、あなたの2つの最良の選択肢は次のとおりです。

  1. Redis、Memcached、またはその他のサーバー側のキャッシュ ソリューションを使用して、必要になるまでオブジェクトをメモリに格納します。
  2. アプリをより ajax-y にし、これらの配列のすべての選択と一時的な永続化をクライアント側で行います。

セッション サイズは、一般的なセッションのハード リミットではなく、基礎となる戦略によって制限されます。CookieStore がデフォルトで、ブラウザの Cookie がそのサイズに制限されているため、最大 4k のデータが許可されます。データベースに基づくセッションを使用する場合、データベース サーバーによってのみ制限されます。

セッションを使用してリクエスト間でデータを保存することは、あまり RESTful ではないことにも注意してください。

于 2013-10-08T14:06:07.040 に答える