2010-11-18 38 views
0

我正在爲我的uni工作在網站上工作,它必須允許不同用戶的登錄訪問。我的導師告訴我,我應該使用會話變量/數組來存儲所有用戶的數據,例如名字,地址等。會話變量vs數據庫

在我的設計中,我只有用戶ID和電子郵件地址(電子郵件用於登錄)然後根據需要從數據庫中獲取數據。他說這會讓網站變慢,因爲我正在做很多與數據庫的連接。

我應該將所有數據存儲在會話變量中還是連接到數據庫以訪問此數據?

感謝您的任何建議:)。

回答

3

您可以在首次登錄時從數據庫獲取信息,然後將其保留在會話變量中,直到它們註銷或會話超時。如果有許多用戶同時登錄,那麼在會話變量中保留大量的用戶數據可能會產生一些開銷,但與進行常量查詢不同。

最好的回答方法可能是詢問用戶有多少其他數據,以及在「典型」會話中可能需要多少數據。大部分用戶在會話期間需要加載的數據可以在登錄時加載。大多數用戶在典型會話期間不需要的數據可以按需加載。

+0

開銷並不大,因爲它只有一個查詢來獲取所有用戶配置文件,並且可以預料到,您以後在請求時需要連接。我不認爲,這會造成如此大的差異。 – KingCrunch 2010-11-18 17:01:23

+0

謝謝,我不會對數據庫進行持續查詢,只會在某些頁面上進行查詢。比如他們想查看存儲的信息。並非每個頁面都需要訪問數據庫,但每次我檢查用戶登錄時,我都會通過會話和數據庫檢查此問題,這是否正確? – Elliott 2010-11-18 17:01:33

+0

+1用於保存數據庫中的信息,但使用本地值來提高性能。 – Randy 2010-11-18 17:01:43

0

答案取決於你想用你的解決方案獲得的「真實世界」。在一個真正的高流量站點中,這些站點可以跨多個服務器進行負載均衡,數據將存儲在數據庫中,然後在從數據庫獲取數據時使用類似memcache的內容緩存一段時間。如果你不需要這樣做,那麼在會話中緩存是完全可以接受的。