代码之家  ›  专栏  ›  技术社区  ›  Martin Bean

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

  •  0
  • Martin Bean  · 技术社区  · 14 年前

    我目前正在开发一个处理用户注册的大型网站。为了争论而建立的社交网站。然而,我注意到页面加载和解密的滞后,是页面上对象的创建减慢了速度。

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

    所以在一个页面上,我可以有七个以上的相同对象,但包含不同的属性。

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

    最好的解决方案是什么?我曾经看过memcache,但由于它是第三方模块,所以我不能让Web主机在这种情况下安装它。在我的案例中,我的备选方案和/或最佳实践是什么?

    事先谢谢。

    2 回复  |  直到 11 年前
        1
  •  1
  •   user50635    14 年前

    我相信缓存从数据库接收的数据通常更好,而不是PHP对象本身。不管怎样, APC , Memcache XCache 是储存它的方法。

        2
  •  0
  •   Lashae    11 年前

    如果您的缓存要求都是关于用户/成员对象的,那么最好是 在用户会话中缓存它 . 因为在用户离线时不需要对象;注销或会话超时将执行所有垃圾收集工作。如果您需要更高的速度,您可以为您的会话存储后端使用缓存解决方案(即APC、memcache等)。

    如果您使用的是ORM,那么可以直接缓存ORM对象,这样您甚至不需要为了配置文件更新而重新获取它。