在PHP中缓存对象的最佳方法?

时间:2010-05-28 18:32:05

标签: php class caching object

我目前正在开发一个处理用户注册的大型网站。争论的社交网站。但是,我注意到页面加载的延迟,并且破译说在页面上创建对象会减慢速度。

例如,我有一个Member对象,当使用作为构造参数传递的ID进行实例化时,它会在数据库中查询成员数据库表中该成员的行。不错,但每次加载页面时都会创建;当调用一组特定成员的朋友时,不止一次调用,因为为每个朋友创建了一个新的成员对象。

因此,在单个页面上,我可以拥有相同对象的七个,但包含不同的属性。

我想要做的是找到一种方法来减少数据库负载,并允许页面加载之间的持久对象。例如,登录用户的对象将在登录时创建(我可以这样做),但随后存储在某处进行检索,因此我不必在页面加载之间继续重新创建对象。

最佳解决方案是什么?我看过Memcache,但由于它是第三方模块,我不能让网络主机在这个场合安装它。在我的案例中,我有哪些替代方案和/或最佳做法?

提前致谢。

2 个答案:

答案 0 :(得分:1)

我认为缓存从数据库接收的数据通常更好,而不是PHP对象本身。不管怎样,APCMemcacheXCache都是存储它的方式。

答案 1 :(得分:0)

如果您的缓存要求完全取决于用户/成员对象,那么最好将缓存在用户会话中。由于您在用户离线时不需要该对象;注销或会话超时将执行所有垃圾收集的东西。如果您需要更高的速度,可以使用缓存解决方案(即APC,Memcache等)作为会话存储后端。

如果您使用的是ORM,则可以直接缓存ORM对象,这样您甚至无需重新获取它以进行配置文件更新。