可锐资源网

技术资源分享平台,提供编程学习、网站建设、脚本开发教程

使用 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 使用共享内存(mmapshm)存储字节码,所有 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 的状态。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言