我不断听到一些 PHP(操作码)缓存,例如 APC、XCache、Memcache、eAccelerator 等。
但我无法弄清楚如何去选择一个。除了缓存系统应该提供的性能优势之外,还应该关注哪些其他因素。
比如为什么你会说 X 缓存系统比 Y 好?我不太担心相对性能提升。任何两个系统之间的微小差异都不那么重要。
如果无法对我的问题给出一个通用的答案,这里有一些提示。我使用带有 Mediatemple 的专用 VPS(具有 root 访问权限)。RAM 为 512 MB(物理)+ 400MB(交换) 我担心 WordPress 及其表兄弟 WordPress-MU 和 BuddyPress。我们 90% 的代码/网站属于 WordPress 家族。
在此先感谢您的帮助。
您列出的产品有不同的用途。
操作码缓存
在这个Wikipedia 列表中可以看到许多 PHP 加速器 (OPCaches) 。与开源产品一样,它们都非常相似。XCache 是 lighttp PHP 加速器,是运行 HTTPd 时的默认选择。它也适用于 Apache,但 APC 似乎在社交方面更“与其他人一起玩”,作为 PHP 的一部分得到官方支持,并且与官方 PHP 发行版同步发布。
我放弃了 usign eAccelerator,因为它的开发速度很慢,并且落后于 PHP 的发布,以及 APC 提供的具有类似性能的官方祝福状态。
这些产品通常是随叫随到的;没有代码更改即时性能提升。使用大型代码库(Drupal、Wordpress),性能可以提高3 倍,同时降低响应时间和内存使用量。
数据缓存
Memcache是一个稍有不同的产品——您可能会将其视为可以扩展到多个服务器的轻量级键值系统。必须增强软件以支持 Memcache,它比其他问题更好地解决了某些问题。如果您的网站上有一个实时股票价值列表,您可能会使用 Memcache 来保留在您的网站上显示的当前价值的常驻列表。您可以使用它来存储会话数据以供短期重用。您不会将它用于其他用途,例如全页缓存,或作为 MySQL 的替代品。
还有诸如WP-Super-Cache 之类的 Wordpress 插件可以显着提高 Wordpress 的性能(事实上,WP-Super-Cache 在许多情况下可以与基于 HTML 的静态网站相媲美)
总而言之——如果你想要一个“设置它并忘记它,支持良好的产品”,我强烈推荐 APC。
stackoverflow 上发布了一个很好的答案,很好地回答了您的问题。
https://stackoverflow.com/questions/28716/which-php-opcode-cacher-should-i-use-to-improve-performance
APC将内置在 PHP6 中,因此这是一个合乎逻辑的选择。我使用它,性能提升是惊人的。如果您需要缓存操作码以外的内容(即 db 查询结果),您也可以使用 APC,但不能在多个服务器之间共享 APC 缓存。如果您只需要在单个服务器上进行缓存,APC 就很棒。如果您需要扩展到多台服务器,并希望在它们之间共享缓存,那么memcached就是您的最佳选择。
不过,我会做的一件事是为您所做的任何(非操作码)缓存创建一个包装类。这样您就可以在不更改代码的情况下更换缓存引擎。
请注意,事情发生了一些变化,似乎 APC 不会包含在 PHP 6 核心中。
APC 发展缓慢,看起来永远不会兼容 PHP 5.5。因此,看起来 PHP 的人会将 Zend OPCache 操作码缓存扩展设置为 PHP CORE 扩展。你关心在这里阅读更多http://wiki.php.net/rfc/optimizerplus。
重要提示:Zend OPCache 没有像 APC 那样的用户数据缓存,所以如果您需要用户数据缓存,您可以将它与 Memcache 一起使用。
如果运行 PHP 版本至少 5.50,OpCache 是您最好的选择(PHP / PECL 原生库)。如果从二进制安装,它应该是预编译的。
http://php.net/manual/en/book.opcache.php
如果运行 5.5 之前的 PHP 版本,APC(PHP / PECL 原生 OpCode 缓存)将是最简单的选择,尽管它被认为是未维护且已死:
http://php.net/manual/en/book.apc.php
使用 PHP 的原生 OpCache 功能应该可以省去维护 3rd 方库的麻烦。
Memcache 缓存键/值对,而不是操作码。您可以将它与操作码缓存之一结合使用。