对于(A)在$ _SESSION数组中每次加载页面时使用的缓存数据,它是否“更好”(更有效,更快,更安全等)(但仍在查询表中的标志以重新加载数据每次都从数据库加载它?或者(B)从数据库加载它?
我正在使用缓存方法(A),但我担心有数百个用户,内存可能会成为一个问题?它只是简单的数据,如名字,姓氏,生日等。
使用任何一种方法,仍然会运行查询。想法?
答案 0 :(得分:6)
如果您的数据在每个页面上使用,并且对所有用户都相同,我不会将其缓存在$ _SESSION中(这意味着每个用户都拥有该数据的不同副本),但是还有另一种机制,例如:
如果您的数据对于每个用户都不相同(在您的情况下似乎就是这种情况,因为您正在缓存名称,生日,......):
作为旁注:如果你一遍又一遍地做同样的查询,你的DB服务器应该自己缓存它(对于MySQL,它会进入“query cache”);所以,我认为它不会像你想象的那么糟糕 - 即使没有那么多优化^^
答案 1 :(得分:1)
这取决于你的会话处理程序是什么。您的会话处理程序可能是MySQL,因此问题不是哪个更好,而是如何优化会话处理。
默认的PHP会话处理程序是文件,但可以很容易地将其更改为mysql。
如果您正在谈论非用户特定数据,那么只需将其保存到数据库即可。如果您以后遇到问题,请担心优化。使用更好的设计模式然后考虑事先优化通常更有利。设计代码,以便您可以轻松地使用不同的处理程序进行存储,以后不会有优化问题。
如果它是特定于用户的,请使用会话,但必要时使用适当的会话处理程序。