唯一的職業是:
- 這不是重複去數據庫更快。也就是說,企業數據庫有足夠的緩存,你不經常需要。
的缺點是多方面的,但三個主要將是:
- 如果數據從另一個會話(比如管理員用戶)改變,你的用戶的會話不知道
- 內存分配可以是一個嚴重的問題很快
- 如果你移動到一個服務器羣(儘管這可以通過使用緩存,而不是會議和密鑰對會話ID來緩解),你將不得不重新考慮你的整個設計,很可能使用數據庫來存儲會話數據 - 那麼你的效率理由就是了看起來有點弱
[編輯]正如其他人指出的那樣,在Session或Cache(或較小程度的應用程序)中保存任何東西時也存在問題,而無需將其保存在更持久的地方。如果一個會話過期,甚至重置自己(我已經看到硬件配置,導致會話開始和結束每個請求。雖然它保留會話ID,存儲在Session對象中的任何數據都會丟失。如果應用程序重新啓動原因,所有的Session,Cache和Application對象都被清除了,Cache對象可以隨時清除這些對象,只是因爲環境決定它想要其他內存空間。
如果您需要用戶能夠進行更改,然後點擊保存來保存它們,請保存一組單獨的狀態表,詳細說明當用戶點擊保存時應對主表進行的更改。使用密鑰在客戶端存儲cookie這對未來有很長的路要走;使用該cookie將您的狀態數據與用戶進行匹配。
來源
2010-02-25 17:40:54
pdr
只是爲了澄清,它只是一個親,如果會話數據可以從數據庫重新加載,如果會話過期。在OP的情況下,會話包含未保存的更改,如果會話過期,則無法恢復。 –
非常有效的一點,布賴恩。會添加一些關於這個答案的更完整的答案。 – pdr
非常感謝你的精彩答案。時間做一點重構,因爲不這樣做的情況非常強烈。 –