能显著降低PHP-FPM压力并提升并发响应速度;它由Nginx在反向代理层实现,命中时完全不触达PHP,效果接近静态页面,需正确配置fastcgi_cache_path、fastcgi_cache、fastcgi_cache_valid及缓存跳过逻辑,并忽略PHP返回的Cache-Control等禁用头。
直接用 Nginx 的
缓存 PHP 页面,能显著降低后端 PHP-FPM 压力,提升并发响应速度。它不是插件式缓存,而是由 Nginx 在反向代理层完成的底层缓存,命中时完全不触达 PHP,效果接近静态页面。
确认 Nginx 支持并启用 fastcgi_cache 模块
宝塔面板默认安装的 Nginx(1.20+ 或 1.22+)已内置
,但需验证是否可用:
进入【软件商店】→ 找到 Nginx → 【设置】→ 【配置修改】
在配置文件最顶部空白处添加一行测试配置:
点击【保存】,若无“unknown directive”报错,说明模块就绪;否则需升级 Nginx 或重装支持版本
创建缓存目录并正确授权
缓存路径必须由 Nginx 工作进程用户(通常是
)可读写,否则目录始终为空、缓存永不生效:
SSH 登录服务器,执行:
设置归属与权限:
验证:
应显示 owner 为
,且含
权限
在网站配置中定义缓存规则
进入【网站】→ 目标站点 → 【设置】→ 【配置文件】,在
块内插入以下内容(放在
上方或内部均可,推荐放内部):
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
立即学习
“
PHP免费学习笔记(深入)
”;
启用缓存区域:
(名称须与
一致)
设定缓存有效期:
控制跳过缓存的条件(关键!避免缓存登录态、后台、带参数页):
关联跳过逻辑:
(可选)加响应头便于调试:
注意事项与常见问题
缓存生效依赖几个隐性前提,漏掉任一环节都会导致“配置写了但没缓存”:
PHP 不得返回禁止缓存的响应头
:务必在配置中加入
,否则 PHP 输出的
会直接让 Nginx 放弃缓存
缓存 key 要合理
:推荐使用
,包含请求方法可避免 HEAD 请求污染 GET 缓存
不要跨站点共用 keys_zone
:多站点部署时,每个站应配独立
名称和缓存路径,防止 key 冲突或误清
上线前用
查看响应头中的
或
,结合
观察目录增长,双重验证是否真生效
fastcgi_cache--with-http_fastcgi_modulefastcgi_cache_path /www/server/nginx/fastcgi_cache levels=1:2 keys_zone=phpcache:100m inactive=30m use_temp_path=off;wwwmkdir -p /www/server/nginx/fastcgi_cachechown -R www:www /www/server/nginx/fastcgi_cache && chmod -R 755 /www/server/nginx/fastcgi_cachels -ld /www/server/nginx/fastcgi_cachewwwdrwxr-xr-xserver{...}location ~ \.php$fastcgi_cache phpcache;keys_zonefastcgi_cache_valid 200 301 302 10m;fastcgi_cache_valid 404 1m;set $skip_cache 0;if ($request_uri ~* "/wp-admin/|/wp-login.php|/admin/") { set $skip_cache 1; }if ($query_string != "") { set $skip_cache 1; }if ($http_cookie ~* "comment_author|wordpress_logged_in|wp-postpass") { set $skip_cache 1; }fastcgi_cache_bypass $skip_cache;fastcgi_no_cache $skip_cache;add_header X-Cache "$upstream_cache_status";fastcgi_ignore_headers Cache-Control Expires Set-Cookie;Cache-Control: no-cachefastcgi_cache_key "$scheme$request_method$host$request_uri";keys_zonecurl -I 域名/某文章页X-Cache: HITMISSdu -sh /www/server/nginx/fastcgi_cache