存储用户登录时的数据


Storing data of user when they log in?

我有一个用户登录的网站,然后我想加载很多关于他/她的信息。例如,我想加载他们关注的人的所有id。我使用$_SESSION来存储用户id/其他基本内容,但对于数组,我担心我需要其他东西来避免浪费服务器上的空间。我想过饼干,但我不知道这是否真的是个好主意。我可以使用什么来安全地存储阵列而不占用服务器上的空间?

简短回答:您无法在客户端上安全存储任何内容(Cookie、本地存储等)。

在会话中存储一个标识符(用户id),并在每次加载页面时查询数据库。

如果你担心性能,你应该考虑缓存你的模板。

编辑:我看到你提到这是一项社会服务。这是一篇来自Facebook的关于他们使用memcached的帖子。其他用户包括YouTube、Reddit、Twitter、汤博乐和维基百科。

如果您担心空间问题,会话(会话文件)是最好的方法。其他解决方案可以将会话存储在内存中,这可能会更快,但您只有少量的RAM。会话文件存储在硬盘上,硬盘空间应该既便宜又充足。

如果会话文件确实很大,则应考虑使用igbinary序列化会话的数据。虽然正常会话数据是纯文本格式,但igbinary数据是小得多的二进制格式。Igbinary在PECL上可用。

预计存储需求将减少约50%。具体的数字取决于您的数据。


把数据放在cookie中是个坏主意。Cookie数据会在每次请求时来回发送。大的cookie意味着大量的流量和缓慢的网站。