AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 56148
Accepted
rahul286
rahul286
Asked: 2009-08-20 07:24:11 +0800 CST2009-08-20 07:24:11 +0800 CST 2009-08-20 07:24:11 +0800 CST

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

  • 772

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

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

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

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

在此先感谢您的帮助。

performance php cache memcached wordpress
  • 6 6 个回答
  • 37596 Views

6 个回答

  • Voted
  1. Best Answer
    SirStan
    2009-08-20T07:36:07+08:002009-08-20T07:36:07+08:00

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

    操作码缓存

    在这个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。

    • 32
  2. The Pixel Developer
    2009-08-20T07:39:03+08:002009-08-20T07:39:03+08:00

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

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

    • 8
  3. lo_fye
    2009-08-20T07:40:46+08:002009-08-20T07:40:46+08:00

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

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

    • 6
  4. Nemke
    2013-08-26T01:20:09+08:002013-08-26T01:20:09+08:00

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

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

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

    • 6
  5. recurse
    2017-01-17T13:39:34+08:002017-01-17T13:39:34+08:00

    如果运行 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 方库的麻烦。

    • 3
  6. user10699
    2009-08-20T07:35:35+08:002009-08-20T07:35:35+08:00

    Memcache 缓存键/值对,而不是操作码。您可以将它与操作码缓存之一结合使用。

    • 0

相关问题

  • IIS 6.0 (Windows Server 2003) 上的 HTTP 压缩

  • 上线的第一天:如何不杀死您的网站

  • IIS 优化

  • mod_rewrite 不转发 GET 参数

  • 更改 PHP 的默认配置设置?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve