使用PHP和MySQL,我正在使用用户登录类型站点。到目前为止,这是我的计划。
用户使用电子邮件/密码登录然后我将一些内容设置为会话(UserID,photoURL,userName,纬度,经度,性别)这些是将保存到会话中的基本项目以及用户可能保存的APC / Memcache是“登录”。
我的会话处理和缓存处理包含在Classes中,因此有一个用户对象通过创建会话和缓存对象来获取每个页面加载的数据,然后将这些对象导入主User对象。
现在我很困惑,我总是以这种方式或类似方式完成它但我知道有些人序列化那些对象,然后将它们保存到会话或缓存,然后在页面加载时检索对象。这样做会更好吗?
答案 0 :(得分:1)
我不认为会议的方式是最好的方式,这只是另一种方式。如果在会话中存储序列化对象然后反序列化它们肯定会更快,但您必须存储大量数据。我个人更喜欢在每个页面加载时重新生成对象,并且仅在对象的创建非常慢时才使用会话序列化。
答案 1 :(得分:1)
我认为你不必考虑它。我在我的公司担任php开发人员,我们有一个网页,每次加载页面时都会创建对象,并且每次为50-200个人提供页面服务,生成页面只需要50ms。因此,如果您真的不需要从序列化对象中获得额外的速度,那么您不必担心它。
答案 2 :(得分:1)
听起来像是过早优化。
从历史上看,将对象存储为序列化实体当然是个好主意 - 只要调用session_start并检索现有会话,引擎就必须还原对象 - 可能在处理类定义之前。但是现在可以推迟对会话对象进行反序列化。
只要您的用户对象不是非常复杂(看起来似乎并不复杂),那么除了将对象存储在会话中之外做任何其他事情可能都是过度的(如果您的用户类非常复杂,您可能想要考虑一下将其拆分 - 确保您的身份验证者和授权人是单独的权利。)
请注意,会话对象透明地序列化并反序列化其所有内容 - 再次通过充分利用__sleep和__wakeup方法可以看到一些好处。
HTH
下进行。