在phpEnv集成环境中,Nginx默认并未开启FastCGI缓存。通过简单修改站点对应的Nginx配置,就可以把PHP动态页面生成的HTML缓存到本地,从而实现类似页面静态化的加速效果,同时降低服务器CPU负载。

一、了解FastCGI缓存原理
FastCGI缓存是Nginx在收到PHP通过FastCGI返回的数据时,根据设定规则把响应内容保存到磁盘目录。后续相同请求到达,Nginx直接读取缓存文件返回,不再调用PHP。这与纯静态文件不同,它依旧支持动态逻辑,只是把结果暂存。
核心配置指令
fastcgi_cache_path:定义缓存存储路径和层级fastcgi_cache_key:区分不同页面的缓存键fastcgi_cache_valid:设置缓存有效期
二、在phpEnv中修改Nginx配置
打开phpEnv面板,进入对应站点的Nginx配置(通常位于软件目录下的vhost文件)。在server块外部定义缓存区,在location ~ .php$内部启用缓存。
完整配置示例
# 在 http 或 server 外定义缓存路径
fastcgi_cache_path /tmp/phpcache levels=1:2 keys_zone=mycache:10m inactive=60m;
server {
listen 80;
server_name localhost;
root "D:/phpenv/www/site";
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ .php$ {
# 使用前面定义的缓存区
fastcgi_cache mycache;
# 缓存键包含请求域名、路径和参数
fastcgi_cache_key "$scheme$request_method$host$request_uri";
# 200和301状态缓存60分钟
fastcgi_cache_valid 200 301 60m;
# 忽略头部中的缓存控制,强制缓存
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
# 添加命中状态头方便调试
add_header X-Cache $upstream_cache_status;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
三、跳过特定请求不缓存
登录用户或提交表单时不应返回缓存。可以通过fastcgi_cache_bypass和fastcgi_no_cache实现。
# 在 php location 内增加
set $skip_cache 0;
if ($http_cookie ~* "wordpress_logged_in") {
set $skip_cache 1;
}
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
四、清除缓存的方法
由于phpEnv运行在Windows,可直接删除/tmp/phpcache目录(若路径在Windows下请改为如C:/phpcache)。也可以写一个小PHP脚本调用unlink批量清理,但最简单是手动删文件夹。
注意:修改配置后,在phpEnv面板点击 Nginx 重载配置,才能生效。
五、验证是否生效
浏览器打开页面,按F12看响应头中的X-Cache。首次为MISS,刷新后变HIT即说明FastCGI缓存已正常工作,页面静态化加速成功。
phpEnvNginxFastCGI_cache修改时间:2026-07-26 02:57:11