WordPress 加速设置:OPCache 加速 PHP 的执行

WP Super Cache 静态网页虽然快,但是最致命的缺点是动态元素没法变更,比如阅读数和文章发布距今时间;而且页面一有修改就要重新生成缓存,开销还是蛮大的。

OPcache 加持后,耗时几乎和静态网页持平,而且保持了页面的动态,内存消耗也极大降低,在后台看页面刷新时 CPU 终于不是 100% 了。而且不仅前台,后台管理页面也加速了。

当然 WP Super Cache 也不是完全没用了,一些几乎就是纯静态的网页(比如隐私政策,友链列表)在长时间内变化很小,就可以弄成静态网页进一步降低性能消耗。

宝塔面板开启 OPCache 扩展

WordPress 加速设置:OPCache 加速 PHP 的执行

OPcache 参数设置

重启一下 php 服务,然后在"配置文件"搜索 opcache.enable 跳到 opcache 的参数设置。

WordPress 加速设置:OPCache 加速 PHP 的执行

opcache.memory_consumption

  • 单位 MB,默认 128
  • opcache 缓存占用的内存。低配置机器一般设置为可用内存的 1/4,或者 256-512 MB。更大的内存占用可以放下更多的缓存。
  • 我的机器总共 2G 内存,可用内存 1.5G 左右,所以我很慷慨地分了 512MB。

opcache.interned_strings_buffer

  • 单位 MB,默认 32
  • 在 PHP 中,字符串常量是不可变的,它们在内存中占据一定的空间。为了提高性能和减少内存消耗,PHP 使用了字符串池(string intern pool)的机制。字符串池通过在内存中共享相同的字符串常量,避免了重复存储相同的字符串数据。增加 opcache.interned_strings_buffer 的大小可以提高字符串常量的共享和重用,从而减少内存占用。
  • 这里我就保持给个 64 MB,之后可以根据实际使用情况再做调整。

opcache.max_accelerated_files

  • 单位 个,默认 80000
  • 最高可以缓存多少个文件。当达到 opcache.max_accelerated_files 设置的限制时,OPcache 会使用一种替换策略(例如最早使用的文件将被淘汰)来释放缓存中的一些脚本文件,为新的脚本文件腾出空间。
  • 设置过小可能会导致频繁的文件淘汰,增加了解析和编译的开销,降低了 OPcache 的性能优势。而设置过大可能会占用过多的内存资源,特别是在有限的服务器配置下。
  • 如果站点不大,完全可以保持默认或者直接容纳所有文件。查看站点下有多少 php 文件的命令行:
cd <你的站点目录>
sudo find . -iname "*.php" | wc -l

WordPress 加速设置:OPCache 加速 PHP 的执行

  • 我的站点目前有近 3000 个 php 文件,我这里就保留默认opcache.max_accelerated_files=80000

opcache.revalidate_freq

  • 单位 秒,默认 3
  • opcache.validate_timestamps 参数启用时,OPcache 会在每个请求中检查脚本文件的时间戳以确定是否重新缓存。opcache.revalidate_freq 参数定义了多少秒后进行一次时间戳检查。
  • 一般个人博客站点不会非常频繁地修改 php 代码(除非很喜欢自己加乱七八糟地功能),而检查时间戳的操作会增加性能开销,所以这个值可以调大,甚至设置为 0 禁用检查;而如果你正在频繁地修改 php 代码,那么可能就要调小一点,比如个位数。
  • 我这里就暂时先设置为 60。

opcache.fast_shutdow

  • 没搞懂干嘛的,保持默认 1。

opcache.validate_timestamps

  • 布尔值 0 和 1,默认 1
  • opcache.validate_timestamps 设置为 1,OPcache 在每个请求中会检查脚本文件的时间戳以确定是否重新缓存。
  • 如果禁用(设置为 0 ),就永远不会检查缓存是否过期,修改了 php 文件后需要手动执行检查。
  • 宝塔配置文件没有,我添加了上去并且保持默认的 1。
  • 修改完之后,保存并重启 php 服务。
  • 监视 OPcache 工作情况
  • 这里就选用 WPJAM BASIC 这个插件监视。

WordPress 加速设置:OPCache 加速 PHP 的执行

刚刚开始使用了不到半个小时的截图

WordPress 加速设置:OPCache 加速 PHP 的执行

第一个饼图对应 opcache.memory_consumption,最后一个饼图对应 opcache.interned_strings_buffer,可以根据这里的使用情况在日后调整这两个参数。

参考说明:

zend_extension=opcache.so
;opcache可用内存 Mb
opcache.memory_consumption=128
opcache.enable=1
opcache.enable_cli=1
;Zend Optimizer + 暂存池中字符串的占内存总量.(单位:MB)
opcache.interned_strings_buffer=8
;对多缓存文件限制, 命中率不到 100% 的话, 可以试着提高这个值 最大缓存文件 
opcache.max_accelerated_files=4000
;内存“浪费”达到此值对应的百分比,就会发起一个重启调度.
opcache.max_wasted_percentage=5
; Opcache 会在一定时间内去检查文件的修改时间, 这里设置检查的时间周期, 默认为 2, 定位为秒,经测试,设置范围在2-5之间效果较好
opcache.revalidate_freq=60
; 打开快速关闭, 打开这个在PHP Request Shutdown的时候回收内存的速度会提高
opcache.fast_shutdown=1
 
; 开启这条指令, Zend Optimizer + 会自动将当前工作目录的名字追加到脚本键上,
; 以此消除同名文件间的键值命名冲突.关闭这条指令会提升性能,
; 但是会对已存在的应用造成破坏.
opcache.use_cwd=0
 
; 开启文件时间戳验证 关闭后不再自动刷新文件
opcache.validate_timestamps=1
 
; 允许或禁止在 include_path 中进行文件搜索的优化
;opcache.revalidate_path=0
声明:本站所有信息内容均由用户自行发表,该内容观点仅代表用户本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。Email:tellusa@foxmail.com

给TA打赏
共{{data.count}}人
人已打赏
WordPress

重置 WordPress 网站的指南

2024-4-25 3:34:38

WordPress

“图像后期处理失败。可能服务器忙或没有足够的资源。请尝试上传较小的文件。推荐的最大尺寸为2500像素。”错误的解决方法

2024-4-25 6:07:27

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
有新私信 私信列表
搜索