2011-01-24 55 views
0

我的Rails(3)應用程序使用AJAX在儀表板上加載幾個portlet。用戶必須經過身份驗證才能查看儀表板。所以存儲在會話中的user_id非常重要。我正在使用默認的ActiveRecord會話存儲。爲什麼Rails會保存會話,即使沒有任何更改?

GET'/ dashboard'完成後,會激發多個XHR GET請求(並處理並行的負載平衡b/c)。這些請求不會以任何方式修改會話,它們只是從會話中檢索user_id。

但是,這會導致每個XHR請求產生一個UPDATE 'sessions' ... where 'session.id' = ...。在第一個XHR請求中引起一個行鎖,所以下面的XHR請求會掛起直到釋放鎖。

是否有任何理由Rails應該將會話再次保存到數據庫,即使沒有任何更改?

回答

0

Rails更新了updated_at字段,所以您可以看到會話最後的時間是,使用的是

例如,您可能會丟棄尚未使用一段時間的會話。做請求意味着你正在使用會話。