本文将介绍如何通过宝塔面板在Nginx中启用fastcgi_cache缓存,以提升WordPress网站的访问速度和减轻服务器负担。我们将简要介绍fastcgi_cache缓存的概念和作用,然后我们将详细指导如何在宝塔面板中配置Nginx以启用fastcgi_cache缓存,设置插件。
注意:由于FastCGI_Cache会缓存PHP请求,可能会导致网站异常。例如阅读量计数失效、缓存评论者信息、缓存登陆界面等,需要添加额外代码排除。因此不建议新手使用FastCGI_Cache缓存。FastCGI_Cache缓存需要使用专门缓存插件。
注意:FastCGI_Cache对服务器性能要求高,如果是1H1G之类低配置,再怎么优化效果也不明显。如果网站动态数据较多,不建议使用FastCGI_Cache缓存;
注意:启用FastCGI_Cache缓存后,就不需要启用页面缓存,除非能把页面缓存和FastCGI_Cache缓存联动(例如使用Wp Rocket插件配置FastCGI_Cache功能);
注意:电商网站等高动态内容网站不建议使用FastCGI_Cache缓存,因为很难实现精准缓存绕过动态内容,非常容易出错。永远不建议新手使用FastCGI_Cache;
什么是fastcgi_cache缓存?
fastcgi_cache是Nginx提供的一种缓存机制,用于提高动态内容的性能。它特别适合处理FastCGI协议的应用,比如 PHP(Wordpress)。fastcgi_cache从系统层面实现网页静态化,极大减少服务器负担、并发能力以及提供提高网站加载速度。
例如Kinsta主机就使用FastCGI模块提供页面缓存,从缓存中提供请求而无需生成动态 HTML,大大减少了原始服务器上的 CPU 负载和提升速度。
而常规使用Wp Rocket,W3 Total Cache等缓存插件实现的页面缓存是应用层面的缓存,跟fastcgi_cache缓存是2回事。2者可互相代替,绝大多数情况下只启用一个就行。也可以2者同时启用,不过需要配置好,技术门槛非常高。
fastcgi_cache缓存有啥优点?
很多人会好奇,对Wordpress来说,fastcgi_cache缓存跟常规通过Wp Rocket等插件实现缓存有啥区别?fastcgi_cache缓存是Web服务器(Nginx)/系统层面缓存,生成缓存需依赖Nginx (PHP不参与),因此资源占用少很多,速度更快,能承担很多并发。缺点是缓存控制没那么灵活、功能少、配置门槛高,所以它没有页面缓存那么普及。
通过Wp Rocket等插件实现的缓存是应用/软件层面的缓存,生成缓存需依赖PHP (Nginx不参与),因此速度慢一些,占用服务器资源多。优点是通过插件控制缓存可以实现精细化控制,自动刷新缓存也容易、精准,非常灵活,功能丰富,最符合大众需求。
提示:同一任务,运行PHP消耗的CPU和内存远大于运行Nginx;当缓存已经生成并且存在时,无论访问哪种缓存基占用的CPU和内存没多大区别;2种缓存主要区别在于:缓存生成时的资源消耗差异,以及命中时的处理路径效率差异。
我们经常跟服务器打交道,处理高并发、卡顿问题。绝大部分时候内存被耗尽或者CPU超负荷都是因为在运行PHP处理任务。fastcgi_cache缓存的生成不需要运行PHP,因此占用资源少很多,极大减轻服务器负担。
同时fastcgi_cache缓存由Nginx处理,响应速度更快。fastcgi_cache缓存在某些环境情况下可能比Litespeed cache缓存还快!
各种缓存平均响应时间对比↓(越短越好):
Fastcgi_cache缓存 vs WP Rocket等插件缓存
Nginx fastcgi_cache(Web服务器级缓存):
工作原理: Nginx 在接收到请求后,如果发现缓存中存在对应的响应(根据配置的cache_key),会直接返回缓存内容,不将请求转发给PHP-FPM处理,完全绕过PHP和WordPress的执行流程。
优点:
速度极快(缓存命中时): 响应路径极短(Nginx本地存取)。
资源消耗极低(缓存命中时): 无额外PHP进程开销,这是其最大优势。对高并发场景友好。
减少PHP负载,提升整体服务器稳定性。
缺点:
灵活性相对较低: 缓存规则配置主要在Nginx中完成(如nginx.conf),处理复杂的缓存失效逻辑(如基于用户状态、复杂URL参数)不如插件直观,需要更熟悉Nginx配置。
功能相对基础: 通常不提供图片懒加载、文件优化(JS/CSS压缩合并)、CDN集成等一站式优化功能(这些可由其他Nginx模块或CDN单独处理)。
管理门槛稍高: 需要直接操作服务器配置文件,对非技术人员不友好。
WP Rocket等插件缓存(应用层静态文件缓存):
工作原理:
缓存生成: 当首次访问一个页面或页面更新后,插件利用PHP生成一个静态HTML文件存储在wp-content/cache等目录。此过程消耗PHP资源。
缓存命中: 后续访问时,Web服务器(Nginx/Apache)会检测到对应的静态HTML文件并直接发送给用户,通常不加载PHP或WordPress(特殊情况如用户登录状态、特定请求参数可能导致绕过缓存)。
优点:
易用性高: 在WordPress后台直观配置所有缓存相关选项,提供丰富的可视化设置。
功能丰富: 集成多种前端优化功能,如静态HTML缓存、页面缓存预加载、缓存清理、数据库优化、懒加载、文件压缩合并、CDN支持等(“一站式解决方案”)。
灵活性好(相对fastcgi_cache基础功能): 插件提供了更细粒度的WordPress层面的缓存排除规则设置。
缺点(对比fastcgi_cache):
缓存生成和维护消耗PHP: 后台任务(如预加载、自动清理缓存)以及未命中缓存的访问,都需要运行PHP进程,这是导致服务商监控到的资源消耗主要来源之一(尤其在站点内容复杂或更新频繁时)。缓存命中时资源消耗很低。
优化不如fastcgi_cache纯粹高效: 即使缓存命中快,但涉及文件IO和后台任务,在极致优化或极高PHP负载场景下,相比fastcgi_cache有轻微劣势(非决定性)。
性能补充说明:
服务器资源消耗的关键: 处理高并发或卡顿问题,常发现瓶颈在于PHP进程占满了CPU或内存。fastcgi_cache在命中缓存时能100%避免这个过程,是大幅减轻服务器负载的核心原因。
速度差异的本质: 在缓存命中的理想情况下,两者的响应速度(“链路”)差异其实非常小(核心都是Web服务器直接返回本地存储的静态内容)。fastcgi_cache的优势更多体现在绕开PHP执行带来的整体低资源消耗和对高并发的承受能力上。
宝塔如何启用fastcgi_cache缓存
现在大部分人建站使用宝塔面板,便捷省事。下面分享宝塔面板开启FastCGI_Cache缓存方法。
宝塔面板默认编译了Nginx ngx_cache_purge 模块,无需额外安装,直接按下面教程操作即可。
全局设置
1登录宝塔后台,在软件商店找到Nginx,点击设置按钮,在“配置修改”里添加以下内容:
fastcgi_cache_path /tmp/wpcache levels=1:2 keys_zone=WORDPRESS:250m inactive=1d max_size=1G;
fastcgi_temp_path /tmp/wpcache/temp;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
#忽略一切 nocache 申明,避免不缓存伪静态等
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
加好之后截图如下:

网站设置
在宝塔后台网站列表中找到相应网站,点击“设置”按钮,将以下代码添加到配置文件中,第43行输入网站服务器IP(外网)地址。代码要按需调整!不同网站情况不一样!再次劝退小白。
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;
}
#对登录用户、评论过的用户不展示缓存
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
set $skip_cache 1;
}
#这里请参考你网站之前的配置,特别是sock的路径,弄错会显示502!如果你的网站使用PHP7.4,就写-74.sock
location ~ [^/]\.php(/|$)
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi-74.sock;
fastcgi_index index.php;
include fastcgi.conf;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
#新增的缓存规则
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
add_header X-Cache "$upstream_cache_status From $host";
fastcgi_cache WORDPRESS;
add_header Cache-Control max-age=0;
add_header Nginx-Cache "$upstream_cache_status";
add_header Last-Modified $date_gmt;
add_header X-Frame-Options SAMEORIGIN; # 只允许本站用 frame 来嵌套
add_header X-Content-Type-Options nosniff; # 禁止嗅探文件类型
add_header X-XSS-Protection "1; mode=block"; # XSS 保护
etag on;
fastcgi_cache_valid 200 301 302 1d;
}
#缓存清理配置
location ~ /purge(/.*) {
allow 127.0.0.1;
allow "服务器外网IP"; # 引号要保留
deny all;
fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1";
}
加好之后截图如下:
添加完后保存,重启Nginx就行,接下来是安装设置缓存插件↓。
安装WordPress清理缓存插件
FastCGI_Cache无法自动及时精准清理网站缓存,所以需要安装配套缓存插件自动控制刷新缓存。后台搜索、安装Nginx Helper插件,这个插件专门为fastcgi_cache缓存打造。
插件设置参考下图 (图片来源: 张戈博客)。
清理模式选择Delete local server cache files,直接从服务器删除缓存文件然后重新生成。
我朋友奶爸建站测试发现Nginx fastcgi_cache缓存(404ms)速度比WP Super Cache + Memcached Object Cache缓存(455ms)快一点.
判断缓存状态
使用浏览器隐身模式打开网站前台(未登录状态),按 F12 进入开发者工具 > “网络” > 点网址> 点“标头”查看详情。


HIT:缓存成功
MISS:缓存失败,建议刷新页面2次看下有没有变成HIT。
BYPASS:跳过缓存
EXPIRED:缓存过期
进阶教程
其实fastcgi_cache缓存也可以和Wp Rocket缓存插件一起使用。配合使用的效果要比单独使用Wp Rocket高27%左右,比单独使用fastcgi_cache缓存相差无几。只要安装rocket-nginx,适当配置就行。这个方法使用门槛高,不懂别用。








10人评论了“宝塔面板Nginx如何启用fastcgi_cache缓存? WordPress提速”
优化前测速1.5-2s,优化后0.5s左右,效果很大
之前没有使用wp rocket之类缓存插件优化速度?
感谢教程!我按照流程做了一遍,发现开启成功后,访问首页会自动跳转到:/wp-admin/setup-config.php 显示: 文件
wp-config.php已经存在。如果您希望重置该文件中的任何配置项目,请先删除该文件。您可以现在安装。 但管理员已登录状态下访问首页不会跳转。wp-config.php文件是否在根目录(名字为网址的那个文件夹)?这个问题一般是你安装wordpress时把系统文件放错位置导致。如果 wp-config.php文件位置正确,试一下清理缓存,禁用所有插件排查是否插件问题。
确认不是浏览器缓存的事,而且我是新建站测试,所有插件关闭也是这个问题。我这边刚测试了下,只要删掉网站的配置文件中新增的关于fastcgi_cache缓存的代码,首页就立即可以访问;添加就会跳转提示
wp-config.php已经存在。我英文也搜了很久,没有找到答案。我快崩溃了…… 😭wp-config.php文件是否在根目录(名字为网址的那个文件夹)?先确定下。可能配置代码复制错了?检查下。
找到原因了,nginx没编译安装
欲哭无泪...
您好,按您配置成功后,wordpress后台的“工具”-“站点健康”中出现如下报错,请问如何解决?REST API遇到了预料之外的结果 性能REST API 是 WordPress 及其他应用与服务器通信的一种途径。例如,区块编辑器页面就依赖 REST API 来显示及保存您的页面和文章。当测试 REST API 时返回了预期之外的结果:REST API 端点:我的站点网址/index.php/wp-json/wp/v2/types/post?context=editREST API 响应:(404) Not Found
您好,导致REST API出错的原因有很多,不一定是因为 Fastcgi_cache缓存。建议逐一禁用插件、切换到默认主题看下问题是否解决。如果确定是 Fastcgi_cache缓存的问题请回复此评论。
很多时候REST API没啥作用,如果不影响网站功能之类建议适当忽略此错误。