应该使用哪种 PHP(操作码)缓存,为什么?

rah*_*286 43 php performance cache wordpress memcached

我一直听说一些 PHP(操作码)缓存,如 APC、XCache、Memcache、eAccelerator 等。

但我无法弄清楚如何去选择一个。除了缓存系统应该提供的性能优势之外,还应该关注哪些其他因素。

比如为什么你会说X缓存系统比Y好?我不太担心相对性能提升。任何两个系统之间的微小差异都不重要。

如果对我的问题不可能有一个通用的答案,这里有一些提示。我使用带有 Mediatemple 的专用 VPS(具有 root 访问权限)。RAM 为 512 MB(物理)+ 400MB(交换)我担心 WordPress 及其表亲 WordPress-MU 和 BuddyPress。我们 90% 的代码/网站都属于 WordPress 家族。

在此先感谢您的帮助。

Sir*_*tan 32

您列出的产品有不同的用途。

操作码缓存

有许多 PHP 加速器 (OPCaches),如此Wikipedia 列表所示。与开源产品一样,它们都非常相似。XCache 是 lighttp PHP 加速器,是您运行 HTTPd 时的默认选择。它也适用于 Apache,但 APC 似乎更“与其他人玩得很好”,作为 PHP 的一部分得到官方支持,并与官方 PHP 发行版同步发布。

我放弃了 usign eAccelerator,因为它的开发速度很慢,而且落后于 PHP 的发布,而且 APC 提供了类似性能的官方祝福状态。

这些产品通常是一次性的;没有代码更改即时性能提升。使用大型代码库(Drupal、Wordpress),性能可以提高3 倍,同时降低响应时间和内存使用量。

数据缓存

Memcache是一种稍微不同的产品——您可能会将其视为可以扩展到多个服务器轻量级键值系统。必须增强软件以支持 Memcache,并且它比其他问题更好地解决了某些问题。如果您的网站上有一个实时股票价值列表,您可以使用 Memcache 来保存显示在您网站上的当前价值的常驻列表。您可以使用它来存储会话数据以供短期重用。您不会将它用于其他用途,例如全页缓存,或作为 MySQL 的替代品。

还有 Wordpress 插件,例如WP-Super-Cache,可以显着提高 Wordpress 的性能(事实上,WP-Super-Cache 在许多情况下可以与基于静态 HTML 的站点相媲美)

总而言之——如果您想要一个“设置并忘记它,支持良好的产品”,我强烈推荐 APC。

  • 这个答案现在非常过时了。自 5.5 版以来,APC 不太可能针对 PHP 的未来版本进行更新,该版本已被 Zend 的优化器和操作码缓存(现在称为 opcache)取代。但是我没有看到性能上的实质性差异(http://symcbean.blogspot.co.uk/2013/09/zend-optimizer-plus-still-not-following.html)进一步缺乏 opcache 中的数据支持并且缺乏内存回收可能会使升级适得其反。 (2认同)

The*_*per 8

stackoverflow 上发布了一个很好的答案,它很好地回答了您的问题。

/sf/ask/2010151/


小智 6

APC将内置到 PHP6 中,因此这是一个合乎逻辑的选择。我使用它,性能提升是惊人的。如果您需要缓存操作码以外的内容(即数据库查询结果),您也可以使用 APC,但无法在多个服务器之间共享 APC 缓存。如果您只需要在单台服务器上缓存,APC 非常棒。如果您需要扩展到多个服务器,并希望在它们之间共享缓存,那么memcached就是您的最佳选择。

不过,我会做的一件事是为您所做的任何(非操作码)缓存创建一个包装类。这样您就可以在不更改代码的情况下更换缓存引擎。

  • 请注意,由于 PHP 5.5 将 Zend Opcache 集成为“官方”操作码缓存,我认为他们不太可能为 PHP 6 切换到 APC。 (6认同)

小智 6

请注意,事情发生了一些变化,似乎 APC 不会包含在 PHP 6 核心中。

APC 开发缓慢,看起来永远不会兼容 PHP 5.5。因此,看起来来自 PHP 的人将 Zend OPCache 操作码缓存扩展设置为 PHP CORE 扩展。你关心在这里阅读更多http://wiki.php.net/rfc/optimizerplus

重要提示:Zend OPCache 没有像 APC 那样的用户数据缓存,所以如果你需要用户数据缓存,你可以和 Memcache 一起使用。