问题描述
我不断听到一些 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 上发布了一个很好的答案,它很好地回答了你的问题。
第三种解决方案
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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。