WordPress 站点开启 Nginx FastCGI 页面缓存 1天前 • WordPress • 阅读 7 FastCGI 是一种用于 Web 服务器和后台应用程序之间的通用协议,开启 Nginx FastCGI 缓存后,PHP 生成的页面会被临时存储起来,从系统层面实现网页静态化。当用户发起相同请求时,系统会直接调用缓存页面,大幅提升 PHP 网站的响应速度。 非专业用户不建议随意开启 FastCGI 缓存,对于包含会员中心、购物车等用户个性化内容的站点,缓存可能导致功能异常。开启前请确保理解缓存规则,并在测试环境充分验证。 本篇文章的测试环境为 Nginx 1.24 + PHP 7.4,并使用宝塔面板进行相关配置。 参考文章:https://www.diiamo.cn/bt-nginx-fastcgi_cachehttps://blog.naibabiji.com/skill/nginx-fastcgi.html 配置 FastCGI 缓存 1、创建 /tmp/wordpress-cache 缓存文件夹,该文件夹需确保在 open_basedir 允许的路径内,并具有访问权限。建议使用 tmp 目录,不要随意更改路径,以免影响缓存功能。 2、根据自己使用的 PHP 版本,找到对应的配置文件,例如 /www/server/nginx/conf/enable-php-74.conf ,并复制文件中的内容备用。 3、修改 WordPress 网站的 Nginx 配置文件,该配置文件对应路径为 /www/server/panel/vhost/nginx/*.conf ,在文件顶部添加以下代码。 # 此处配置根据实际需求进行调整 # fastcgi_cache_path 定义缓存存放路径。 # keys_zone=WORDPRESS:200m 分配 200MB 内存用于缓存键管理 # max_size=2g 缓存占用磁盘最大 2GB # inactive=1d 缓存内容 1 天未被访问将被清理 # fastcgi_temp_path FastCGI 临时文件存放路径 fastcgi_cache_path /tmp/wordpress-cache levels=1:2 keys_zone=WORDPRESS:200m max_size=2g inactive=1d use_temp_path=off; 4、配置 FastCGI 缓存规则。 set $skip_cache 0; # POST请求不缓存 if ($request_method = POST) { set $skip_cache 1; } # 有动态查询参数的请求不缓存 if ($query_string != "") { set $skip_cache 1; } # 后台和特定系统文件不缓存 if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") { set $skip_cache 1; } # 登录用户或特殊cookie不缓存 if ($http_cookie ~* "wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") { set $skip_cache 1; } 5、注释掉原有 PHP 引用配置,粘贴原始文件内容,并新增 FastCGI 缓存相关配置。 # 注释掉 PHP 引用配置 # include enable-php-74.conf; location ~ [^/]\.php(/|$) { try_files $uri =404; fastcgi_pass unix:/tmp/php-cgi-74.sock; fastcgi_index index.php; include fastcgi.conf; include pathinfo.conf; # 新增缓存规则 fastcgi_cache WORDPRESS; fastcgi_cache_valid 200 301 302 2h; fastcgi_cache_min_uses 1; fastcgi_cache_lock on; fastcgi_cache_bypass $skip_cache; fastcgi_cache_key "$scheme$request_method$host$request_uri"; fastcgi_cache_use_stale error timeout updating invalid_header http_500 http_503; fastcgi_no_cache $skip_cache; # 安全与调试头 fastcgi_ignore_headers Cache-Control Expires Set-Cookie; add_header X-FastCGI-Cache "$upstream_cache_status From $host"; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; } 6、修改完成后,重载 Nginx 配置。如果使用终端,可以执行以下命令。 # 测试配置是否正确 nginx -t # 重载 Nginx systemctl reload nginx 7、完成以上配置后,FastCGI 缓存基本已经生效。 打开浏览器访问网站,使用开发者工具查看响应头,首次访问页面通常会显示如下内容: # MISS 表示缓存未命中 X-FastCGI-Cache: MISS From yourdomain.com 刷新页面几次后,响应头应变为: # HIT 表示该页面已被缓存 X-FastCGI-Cache: HIT From yourdomain.com 此时检查 /tmp/wordpress-cache 目录,确认是否生成了缓存文件。 安装缓存清理插件 配置 FastCGI 缓存后,为了确保内容更新能够及时刷新缓存,建议安装 WordPress 缓存清理插件。插件可以在文章发布、修改或用户操作时自动清理相关缓存,避免用户看到过期内容或功能异常。 1、登录 WordPress 后台管理,搜索并安装 Nginx Cache 插件。 2、该插件默认为英文界面,如需中文界面,可以前往 https://wpfanyi.com/plugins/nginx-cache 下载语言包,并将语言包文件替换到插件目录 /wp-content/plugins/nginx-cache/languages 。 3、安装完成后,前往 Nginx Cache 插件的设置页面,填写缓存文件夹路径,并勾选清除缓存选项。 4、配置后可以通过发布或更新文章,来测试插件是否能自动清理过期缓存。 本文为原创文章,著作权归作者所有:来自「KOBIN 技术随笔」作者的原创作品,转载请标明出处。WordPress 站点开启 Nginx FastCGI 页面缓存https://blog.kobin.cn/blog/program/p2/3714.html NginxPHPWordPress宝塔面板 赞 (0) 0 0 生成海报 评论功能升级维护公告为响应国家网络信息安全合规要求,并进行全面的安全策略升级,本站自即日起暂时关闭博客的评论功能。在此期间,您将无法发表新的评论,但仍可正常浏览所有历史文章及现有评论。如果您遇到问题需要协助,可以选择在线留言,或者发送邮件到 chen@kobin.cn 。对于给您带来的不便,深表歉意。感谢您的理解与支持!KOBIN 技术随笔2025 年 8 月 26 日