WPGraphQL Smart Cache 无法正常工作的原因排查求助
排查WPGraphQL Smart Cache未触发缓存的问题
针对你的情况,从以下几个方向逐步排查:
1. 插件基础验证
- 确保WPGraphQL核心插件已激活,WPGraphQL Smart Cache是依赖它的附属插件,核心未启用的话缓存逻辑完全不工作
- 进入WordPress后台的
WPGraphQL > Settings > Cache页面,确认全局缓存开关已开启,同时检查Excluded Queries列表里有没有误加了你测试的查询语句 - 核对插件版本兼容性:确认WPGraphQL和Smart Cache的版本适配,且官方文档标注支持PHP 8.2(如果插件版本过旧可能不兼容高版本PHP)
2. Nginx配置检查
- 检查Nginx站点配置文件(通常在
/etc/nginx/sites-available/目录下),确认没有fastcgi_hide_header X-Cache;这样的指令,这会直接隐藏插件输出的缓存头 - 确保Nginx正确传递请求头到PHP,在
location ~ \.php$块内添加或确认以下配置:fastcgi_pass unix:/run/php/php8.2-fpm.sock; fastcgi_param HTTP_HOST $host; fastcgi_param X-Forwarded-For $remote_addr; - 如果Nginx自身配置了静态缓存(如
proxy_cache),暂时禁用后测试,避免两种缓存机制冲突
3. PHP环境与权限排查
- 查看PHP错误日志(通常在
/var/log/php8.2-fpm.log),搜索WPGraphQL或Smart Cache相关报错,比如缓存目录写入失败的权限问题 - 确认WordPress的
wp-content/cache目录归属为www-data用户,权限设置为755,执行命令:sudo chown -R www-data:www-data /var/www/your-site/wp-content/cache sudo chmod -R 755 /var/www/your-site/wp-content/cache - 检查PHP的
opcache是否启用(不是必须,但可能影响插件逻辑),查看php.ini里的opcache.enable=1配置
4. 缓存类型配置细节
本地缓存
- 在插件设置里确认本地缓存的存储路径正确,默认是
wp-content/cache/wpgraphql,手动检查该目录是否存在且可写
对象缓存(如Redis/Memcached)
- 确认对应的PHP扩展已安装:比如Redis需要
php-redis,执行sudo apt install php8.2-redis并重启PHP-FPM - 在
wp-config.php里添加对象缓存的配置常量,以Redis为例:define( 'WP_REDIS_HOST', '127.0.0.1' ); define( 'WP_REDIS_PORT', 6379 ); define( 'WP_REDIS_DATABASE', 0 ); - 回到插件设置,确认已选择对应的对象缓存驱动
5. 请求本身的验证
- 使用匿名浏览器窗口测试,登录状态下插件默认会跳过缓存(因为用户会话存在个性化内容)
- 确认请求是GET方法,POST请求默认不会被缓存,如需缓存POST请求,要在插件设置里开启
Cache POST Requests选项 - 检查请求头里是否带有
Cache-Control: no-cache或Pragma: no-cache,这些指令会强制插件不生成缓存
内容的提问来源于stack exchange,提问作者Ilya
相关产品推荐
相关产品推荐

