使用 OPCache 字节码缓存让 WordPress PHP 执行效率提升 300%
前面我们介绍了使用 Memcached 内存缓存来实现 WordPress 站点秒开,其实 WordPress 加速还有个一个大招就是使用 OPcache 字节码缓存来提升 PHP 的执行效率,经测试最高可达提升 300%。
这么强吗?那今天就介绍一下 OPCache!
OPCache 是什么?
OPCache 是 PHP 的官方推出的字节码缓存器(Zend OPcache),通过将 PHP 脚本预编译的字节码存储在共享内存中来提升 PHP 的性能,在 PHP 5.5.0 及后续版本中已经绑定了 OPcache 扩展,
缓存预编译字节码的好处就是避免重复解析和编译脚本,省去了每次加载和解析 PHP 脚本的开销,那么这一过程是如何实现的呢?

缓存字节码:PHP 脚本首次被执行的时候,Zend 引擎会将代码转换为 抽象语法树(AST),再编译为 字节码(opcodes),OPCache 扩展会拦截这一过程,将字节码存储在共享内存中,后续请求直接调用内存中的字节码,跳过重复编译的过程。
内存共享机制:OPCache 使用共享内存(mmap
或 shm
)存储字节码,所有 PHP 进程(如 PHP-FPM 子进程)共享同一份缓存,降低了内存的占用,相比其他方案,OPCache 与 PHP 内核深度集成,效率更高。
所以 OPCache 在下面几个关键点提升了性能:
- CPU 节省:避免重复编译,降低 CPU 负载(尤其是 WordPress 这类动态脚本)。
- I/O 优化:减少磁盘读取
.php
文件的次数(对机械硬盘效果显著)。 - 内存效率:字节码比原始 PHP 代码更紧凑,共享内存减少整体内存占用。
所以对于 WordPress 来说,就特别需要 OPCache 了,因为 WordPress 每个页面请求都会加载大量 PHP 文件(主题、插件、核心),这样未优化的 WordPress 在流量高峰时容易因 PHP 编译拖慢响应。
如何启用 OPCache?
PHP PHP 5.5.0 及后续版本默认包含 OPCache,OPcache 只能编译为共享扩展,如果你使用 --disable-all 参数 禁用了默认扩展的构建, 那么必须使用 --enable-opcache 选项来开启 OPcache。
编译之后,就可以使用 zend_extension 指令来将 OPcache 扩展加载到 PHP 中。在非 Windows 平台使用 zend_extension=/full/path/to/opcache.so
, Windows 平台使用 zend_extension=C:\path\to\php_opcache.dll
。
汇总一下在 php.ini
中添加下面代码:
zend_extension=opcache.so ; Linux
zend_extension=opcache.dll ; Windows
opcache.enable=1
针对 WordPress,可以加入这些专属优化配置:
[opcache]
opcache.enable=1
opcache.memory_consumption=256 ; WordPress 建议 ≥128MB
opcache.max_accelerated_files=10000 ; 覆盖 WordPress 核心 + 插件文件数
opcache.interned_strings_buffer=16 ; WordPress 大量重复字符串(如钩子名)
opcache.validate_timestamps=0 ; 生产环境关闭自动检查
opcache.revalidate_freq=0 ; 与 validate_timestamps=0 配合
opcache.save_comments=1 ; WordPress 依赖注释(如钩子文档)
opcache.enable_file_override=1 ; 覆盖 include/require 优化
安装好时候,如何检测验证安装成功了呢?
简单可以通过通过 phpinfo()
或命令行 php -v
查看是否加载。也可以在后台 「WPJAM」主菜单下「系统信息」子菜单中的「服务器」标签中「PHP 扩展」看到:OPCache:

当然最重要是「OPCache」标签页:

这里也会罗列出 OPCache 的一些状态,比如已用内存和剩余内存,以及他们之间百分率,命中率和未命中率,以及他们之间百分率等等数据,还有相关的饼图。
生产环境一般建议关闭 validate_timestamps
,避免频繁检查文件修改,文件有更新的时候通过手动重启 OPCache 或 PHP-FPM 来更新代码,也可以在上图中点击「刷新缓存」即可。
下面是一个简单 WordPress 站点在开启 OPCache 前后的性能对比:
场景 | 未启用 OPCache | 启用 OPCache | 优化幅度 |
---|---|---|---|
首页加载时间 | 800ms | 300ms | ↓62.5% |
后台管理页面 | 1200ms | 500ms | ↓58.3% |
并发请求(100 QPS) | CPU 90% | CPU 45% | ↓50% |
所以可以看到启用 OPCache 最高接近 300% 的提升。
简单总结
PHP 代码使用 OPCache 之后,可以提高代码的执行效率,特别是 WordPress 这类文件比较多的 CMS 系统,所以在使用 Memcached 内存缓存来实现 WordPress 站点秒开之后,记得一定要开启 OPCache 来提速,另外 WPJAM Basic 也在 WordPress 集成了 OPCache 状态页面,可以看到 PHP 使用 OPCache 的状态。