【发布时间】:2011-05-12 04:08:06
【问题描述】:
我正在为我的 uni 工作开发一个网站,它必须允许不同用户的登录访问。我的导师告诉我应该使用会话变量/数组来存储所有用户数据,例如名字、地址等。
在我的设计中,我只有用户 ID 和电子邮件地址(电子邮件用于登录),然后根据需要从数据库中获取数据。他说这会减慢网站速度,因为我正在与数据库进行大量连接。
我应该将所有数据存储在会话变量中还是连接到数据库来访问这些数据?
感谢您的任何建议:)。
【问题讨论】:
我正在为我的 uni 工作开发一个网站,它必须允许不同用户的登录访问。我的导师告诉我应该使用会话变量/数组来存储所有用户数据,例如名字、地址等。
在我的设计中,我只有用户 ID 和电子邮件地址(电子邮件用于登录),然后根据需要从数据库中获取数据。他说这会减慢网站速度,因为我正在与数据库进行大量连接。
我应该将所有数据存储在会话变量中还是连接到数据库来访问这些数据?
感谢您的任何建议:)。
【问题讨论】:
答案取决于您希望通过解决方案获得的“真实世界”程度。在一个真正的高流量站点中,将在多个服务器之间进行负载平衡,数据将存储在数据库中,然后在从数据库中获取数据时使用 memcache 之类的东西缓存一段时间。如果您不需要忘乎所以,那么在会话中进行缓存是完全可以接受的。
【讨论】:
您可以在他们第一次登录时从数据库中获取信息,然后将其保存在会话变量中,直到他们注销或会话超时。如果有许多用户同时登录,在会话变量中保存大量用户数据可能会产生一些开销,但这与进行持续查询不同。
最好的回答方式可能是询问用户还有多少其他数据,以及在“典型”会话中可能需要多少数据。大多数用户在会话期间需要加载的数据可以在登录时加载。大多数用户在典型会话期间不需要的数据可以按需加载。
【讨论】: