应先优化 PHP 执行层,因为 FrankenPHP 的 worker 模式可复用 WordPress 启动环境,若未启用 php_worker 和 auto_prepend_file,则每次请求仍重复加载主题、插件和 wp-settings.php,导致 TTFB 中 90% 以上为 PHP 启动耗时,而非网络或数据库瓶颈。

先优化 PHP 执行层,而不是一上来调 Caddy 或改数据库。
为什么不是先看网络或数据库?
FrankenPHP 把 PHP 运行时嵌进 Caddy 进程里,没有 fastcgi_pass 跳转、没有 Unix socket 通信开销,TTFB 里网络和代理层延迟基本归零。你用 curl -w 测出来的 time_starttransfer 几乎就等于 PHP 实际执行时间 —— 这意味着瓶颈大概率在 WordPress 自身启动链路上。
WordPress REST API 的每次请求都要加载全部主题、插件、wp-settings.php、初始化对象缓存、跑所有 add_action('rest_api_init') 钩子。这个过程在 FrankenPHP 的常驻 worker 模式下本该受益,但默认没开,它还是按传统“每请求启动一次”的方式跑。
- 查证方法:在
wp-config.php顶部加error_log(microtime(true));,再在wp-settings.php底部加一次,差值就是纯 bootstrap 耗时(通常 80–200ms) - 典型症状:
Query Monitor显示“PHP execution time”占 TTFB 90% 以上,但数据库查询总耗时不到 10ms - FrankenPHP 特有陷阱:开了
worker模式但没配php_value auto_prepend_file,导致 worker 进程无法复用已加载的类和配置
怎么快速验证并启用 worker 模式?
FrankenPHP 的 worker 模式才是它区别于 Nginx+PHP-FPM 的核心价值 —— 让 WordPress 的 bootstrap 只做一次,后续请求直接复用内存中的框架实例。
使用tbot机器ID身份文件配合tsh CLI,通过Teleport访问控制SSH登录托管主机或执行远程命令。
立即学习“PHP免费学习笔记(深入)”;
- 确认你的
Caddyfile里启用了php_worker:php_worker /wp-json/* { root * /var/www/wordpress php } - 必须显式指定
auto_prepend_file,否则 worker 不会预加载 WordPress 环境:php_value auto_prepend_file /var/www/wordpress/wp-load.php - 禁用
opcache.validate_timestamps=0(生产环境),否则文件变更后 worker 不会热更新,容易卡在旧代码里 - 重启 FrankenPHP 后,用
curl -I http://localhost/wp-json/wp/v2/posts?per_page=1多跑几次,观察time_starttransfer是否从 150ms 稳定降到 20–40ms
OPcache 和数据库优化要同步做,但顺序靠后
OPcache 对 worker 模式是锦上添花,不是雪中送炭 —— 如果 bootstrap 本身没复用,opcode 缓存再快也救不了重复加载插件和主题的开销。
- 确保
opcache.enable=1且opcache.max_accelerated_files≥ 20000(WordPress 插件多,小值会导致频繁踢出) - 数据库优化优先砍
wp_options表:用SELECT option_name, LENGTH(option_value) FROM wp_options ORDER BY LENGTH(option_value) DESC LIMIT 10;查大字段,特别是_transient和_site_transient类型;这些在 worker 常驻时更易堆积 - 不要依赖插件自动清理 ——
wp_options膨胀会拖慢整个wp_load_alloptions(),而这个函数在每次 REST 请求里都会被调用
FrankenPHP 下 WordPress REST API 最容易被忽略的点,是误以为“换服务器就等于性能提升”。其实它把优化焦点从运维层(调 pm.max_children)转移到了应用层(是否真正复用 PHP 进程状态)。没开 worker 或没配 auto_prepend_file,你就只是换了个名字的 PHP-FPM。这点不确认清楚,后面所有数据库、缓存、CDN 的优化都事倍功半。


















