2010-11-18 61 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的内容缓存一段时间。如果你不需要这样做,那么在会话中缓存是完全可以接受的。