我不断听说一些 PHP(操作码)缓存,如 APC、XCache、Memcache、eAccelerator 等。
但我一直搞不清楚该如何选择。除了缓存系统应该提供的性能优势之外,还有哪些其他因素值得关注。
比如,为什么你会说 X 缓存系统比 Y 更好?我不太担心相对性能提升。任何两个系统之间的微小差异都不那么重要。
如果无法对我的问题给出一个通用的答案,这里有一些提示。我使用带有 Mediatemple 的专用 VPS(具有 root 访问权限)。RAM 为 512 MB(物理)+ 400MB(交换)我担心 WordPress 及其同类 WordPress-MU 和 BuddyPress。我们 90% 的代码/网站都属于 WordPress 家族。
提前感谢你的帮助。
答案1
您列出的产品有不同的用途。
OPCode缓存
这里有很多 PHP 加速器 (OPCaches),如上所示维基百科列表。与开源产品一样,它们都非常相似。XCache 是 lighttp PHP 加速器,是运行 HTTPd 时的默认选择。它也能很好地与 Apache 配合使用,但是从社交角度来说,APC 似乎更“与其他产品配合良好”,作为 PHP 的一部分得到官方支持,并与官方 PHP 发行版同步发布。
我放弃使用 eAccelerator,因为它的开发速度很慢,并且落后于 PHP 的发布,而官方的祝福状态 APC 提供了类似的性能。
这些产品通常都是即插即用;无需更改代码即可立即提高性能。对于大型代码库(Drupal、Wordpress),性能可以达到3 倍更好同时降低响应时间和内存使用量。
数据缓存
内存缓存是一个略有不同的产品——你可以把它看作轻量级键值系统可以扩展到多台服务器。必须增强软件以支持 Memcache,它比其他软件更好地解决了某些问题。如果您的网站上有实时股票价值列表,则可以使用 Memcache 来保存当前价值的常驻列表,该列表会在整个网站上显示。您可以使用它来存储会话数据以供短期重用。您不会将它用于其他用途,例如全页缓存或作为 MySQL 的替代品。
还有 Wordpress 插件,例如WP超级缓存这可以大大提高 Wordpress 的性能(事实上,WP-Super-Cache 在很多情况下可以与基于静态 HTML 的网站相媲美)
总而言之 - 如果您想要一款“设置后即可忘记,并且得到良好支持的产品”,我强烈推荐 APC。
答案2
stackoverflow 上发布了一个很好的答案,很好地回答了你的问题。
答案3
亚太经合组织将被内置到 PHP6 中,因此这是一个合乎逻辑的选择。我使用它,性能提升非常惊人。如果您需要缓存除操作码之外的其他内容(即数据库查询结果),您也可以使用 APC,但无法在多台服务器之间共享 APC 缓存。如果您只需要在一台服务器上缓存,APC 就很棒。如果您需要扩展到多台服务器,并希望在它们之间共享缓存,memcached是你的男人。
不过,我会做的一件事是为您执行的任何(非操作码)缓存创建一个包装器类。这样,您就可以更换缓存引擎而无需更改代码。
答案4
如果运行 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 功能可以省去维护第三方库的麻烦。