2013-10-08 26 views
1

在兩個控制器動作之間存儲數據的最佳方式是什麼?在動作之間存儲數據

實施例:

  1. 我有帖子ID ["2907", "2334", "2309",.... N]的大陣列I創建它在第一步驟中確認,進入第二步驟到另一個控制器的動作。
  2. 另一個控制器動作呈現數據(日曆,羣組)中,i選擇在日曆日期,選擇基團和再創建一個日期時間數據確認的陣列和去到另一個動作
  3. 另一個動作操縱與此陣列和陣列的帖子ID,並再次提交日期我確認後要保存的數據,數據在數據庫中安全並清除會話中的所有數組。

我將動作存儲在會話中的所有數組之間,如session[:posts_ids] = params[:posts_ids]flash[:date_day] ||= params[:date_day]。我認爲它不適用於一個非常大的數據陣列。可能是將其存儲在redis中的最佳方式?

回答

4

這主要意見爲基礎的,但我覺得你的兩個最好的選擇是:

  1. 使用Redis的,Memcached的或其他一些服務器端cacheing解決對象存儲在內存中,直到你需要他們。
  2. 使您的應用程序更多ajax-y,並執行所有這些數組客戶端的選擇和臨時的持久性。

會話大小受基本策略的限制,而不是會話的硬限制。 CookieStore是默認設置,並且允許〜4k的數據,因爲瀏覽器cookie被限制爲該大小。如果您使用數據庫支持的會話,則僅受數據庫服務器限制。

您還應該記住,使用會話在請求之間存儲數據不是非常RESTful。

+1

對於非RESTful會話聲明+1。 –

相關問題