我正在构建一个PHP / MySQL应用程序,用户可以登录并搜索媒体资产。他们还可以保存搜索并创建灯箱(资产集合)。最后,他们可以创建用户组。
在登录时,一次查询所有已保存的搜索,灯箱和组的ID并将其保存在会话变量中是否更有意义?或者在第一次点击相应页面时执行查询?我正在寻找效率,会议似乎是要走的路,但是我忽略了什么吗?
答案 0 :(得分:5)
最大规则:仅在会话中提供您在会话中所需的内容
我认为将所有你需要的东西全部放在会话中是不明智的,因为你会有很多不需要的地方。用户可能没有足够长的时间来使用那里的所有数据,所以你只是浪费时间和资源把它放在那里。
根据需要将您的信息放在那里(当他们转到需要该信息的每个页面时)。
始终保持会话对象整洁,你的表现会感谢你。
答案 1 :(得分:3)
在登录时查询所有内容是一个坏主意。首先,它会降低登录速度,然后在每次登录时在SQL服务器上创建一个静态工作负载。
如果您在适用时进行查询,则会产生不同的负载。 (即使您缓存了稍后要使用的结果)
此外,如果您将结果存储在会话中,那么您将增加用于该用户的每个请求的内存。
有很多东西对您的特定网站有益,但我们需要更多数据才能更好地回答这些问题。
答案 2 :(得分:0)
仅查询您需要的内容以及何时需要。
证明一个查询中的所有内容都是错误的简短示例:
如果您查询登录和用户数据并且登录失败,则不会使用其余查询。