问题描述

我不断听到一些 PHP(操作码) 缓存,如 – APC,XCache,Memcache,eAccelerator 等。

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

为什么你会说 X 缓存系统比 Y 好?我不太担心相对绩效的增长。任何两个系统之间的微小差异都不大。

如果我的问题的一般答案是不可能的,这里有几个指针。我使用专门的 VPS 与 Mediatemple(根访问) 。 RAM 是 512 MB(物理)+ 400MB(交换) 我关心 WordPress 及其表兄弟 WordPress-MU 和 BuddyPress 。我们的代码/网站中有 90%属于 WordPress 系列。

提前感谢一些帮助。

最佳解决方案

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

OPCode 缓存

在这个 Wikipedia list 上有许多 PHP 加速器 (OPCaches) 。与开放源码产品一样,它们都是非常相似的。 XCache 是​​lighttp PHP 加速器,是运行该 HTTPd 时的默认选项。它也适用于 Apache,但 APC 似乎在社交方面稍微更加 「与其他人打交道」,作为 PHP 的一部分正式支持,并发布了具有官方 PHP 发行版的 in-step 。

我放弃了 eAccelerator 的使用,因为它的发展缓慢,并且与 PHP 的发布滞后,APC 提供的官方祝福状态具有类似的性能。

这些产品通常会下降; 没有代码改变即时性能提升。使用大型代码库 (Drupal,Wordpress),性能可以达到 3x better,同时降低响应时间和内存使用量。

数据缓存

Memcache 是​​一个略有不同的产品 – 您可能会认为它是一个轻量级的键值系统,可以扩展到多个服务器。必须增强软件以支持 Memcache,并且比其他方面更好地解决了某些问题。如果您的网站上有实时股票价值清单,您可以使用 Memcache 来保留您网站上显示的当前价值的居民名单。您可以使用它来存储会话数据以进行短期重用。您不会将其用于其他方面,例如 full-page 缓存或作为 MySQL 的替代品。

还有 Wordpress 插件,如 WP-Super-Cache,可以大大提高 Wordpress 的性能 (实际上,WP-Super-Cache 可以在许多情况下竞争静态的 HTML 网站)

总而言之,如果您想要 「设置并忘记它,支持良好的产品」,我将非常推荐 APC 。

次佳解决方案

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

https://stackoverflow.com/questions/28716/which-php-opcode-cacher-should-i-use-to-improve-performance

第三种解决方案

APC 将内置到 PHP6 中,因此它是一个合理的选择。我使用它,性能提升是惊人的。如果您需要缓存除操作码之外的其他内容 (即数据库查询结果),那么也可以使用 APC,但不可能在多个服务器之间共享 APC 缓存。如果您只需要在单个服务器上进行缓存,APC 就会很好。如果您需要扩展到多个服务器,并希望在它们之间共享一个缓存,那么 memcached 就是你的人。

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

第四种方案

只是要注意事情有所改变,似乎 APC 不会包含在 PHP 6 内核中。

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

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

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。