2013-08-01 25 views
4

我知道狀態可以存儲在cookie和session[]散列中。跨同一用戶請求存儲狀態

以下哪項可用於存儲來自同一用戶的ACROSS狀態請求?選擇所有符合條件的。

  1. 餅乾由控制器方法設置由控制器方法

回答這個測驗問題設置

  • 類變量
  • session[]散列
  • 實例變量是(1 )和(2)。我的問題是:爲什麼不能(3)和/或(4)跨同一用戶的請求存儲狀態?

  • 回答

    6

    (3)不能跨請求存儲狀態。每次請求進入Rails應用程序時,都會創建一個控制器實例,並在其上調用適當的操作方法。一旦處理完請求,控制器實例就會被拋棄,併爲下一個請求創建一個新的請求。 (4)可以在技術上跨請求存儲狀態,但數據將在控制器的所有實例中共享,而不管哪個用戶正在發出請求。它也無法從其他控制器訪問,如果重新啓動服務器會丟失,並且如果同時運行Rails應用程序的多個實例(在生產場景中很常見),則類變量的內容將不會在它們之間共享。

    詳細說明爲什麼這樣的事情是一個壞主意:https://stackoverflow.com/a/1029798/742690