承接 - 外貿網站架設 谷歌SEO優化 網站速度優化

寶塔面板Nginx如何啟用fastcgi_cache快取? WordPress快速

搜尋
啟用fastcgi_cache快取
文章目錄
文章目錄

本文將介紹如何透過寶塔面板在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缓存还快!

各種快取平均回應時間對比↓(越短越好):

已貼 108

 

​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;

加好之後截圖如下:

已貼上 104

 

網站設定

在寶塔後台網站清單中找到對應網站,點選「設定」按鈕,將以下程式碼加入設定檔中,第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 configuration

新增完後儲存,重啟Nginx就行,接下來是安裝設定快取外掛↓。

 

安裝WordPress清理快取插件

FastCGI_Cache無法自動及時精準清理網站緩存,所以需要安裝配套快取外掛程式自動控制刷新快取。後台搜尋、安裝Nginx 助手插件,這個插件專門為fastcgi_cache快取打造。

插件设置参考下图 (图片来源: 張戈部落格)。

快速快取

清理模式選擇Delete local server cache files,直接從伺服器刪除快取檔案然後重新產生。

我朋友奶爸建站測試發現Nginx fastcgi_cache快取(404ms)速度比WP Super Cache + Memcached Object Cache快取(455ms)快一點.

 

判斷快取狀態

使用瀏覽器隱身模式開啟網站前台(未登入狀態),按F12 進入開發者工具> 「網路」 > 點網址> 點「標頭」查看詳情。

已貼 106

已貼 107

HIT:快取成功
MISS:快取失敗,建議刷新頁面2次看下有沒有變成HIT。
BYPASS:跳過快取
EXPIRED:快取過期

 

進階教程

其實fastcgi_cache快取也可以和Wp Rocket快取外掛一起使用。配合使用的效果比單獨使用Wp Rocket高27%左右,比單獨使用fastcgi_cache快取相差無幾。只要安裝rocket-nginx,適當配置就行。這個方法使用門檻高,不懂別用。

評論 :

在〈宝塔面板Nginx如何启用fastcgi_cache缓存? WordPress提速〉中有 10 則留言

  1. 感謝教學!我按照流程做了一遍,發現開啟成功後,訪問首頁會自動跳到:/wp-admin/setup-config.php 顯示: 文件 wp-config.php 已經存在。如果您希望重設該檔案中的任何設定項目,請先刪除該檔案。您可以現在安裝。 但管理員已登入狀態下造訪首頁不會跳轉。

    1. wp-config.php檔案是否在根目錄(名字為網址的那個資料夾)?這個問題通常是你安裝wordpress時把系統檔案放錯位置導致。如果wp-config.php檔案位置正確,試試看清理緩存,停用所有外掛程式排查是否插件問題。

      1. 確認不是瀏覽器快取的事,而且我是新建站測試,所有插件關閉也是這個問題。我這邊剛測試了下,只要刪掉網站的設定檔中新增的關於fastcgi_cache快取的程式碼,首頁就立即可以存取;新增就會跳轉提示wp-config.php 已經存在。我英文也搜了很久,沒有找到答案。我快崩潰了…… 😭

        1. wp-config.php檔案是否在根目錄(名字為網址的那個資料夾)?先確定下。可能配置程式碼複製錯了?檢查下。

  2. 您好,按您設定成功後,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

    1. 您好,導致REST API出錯的原因有很多,不一定是因為 Fastcgi_cache快取。建議逐一停用外掛程式、切換到預設主題看下問題是否解決。如果確定是 Fastcgi_cache快取的問題請回覆此評論。
      很多時候REST API沒啥作用,如果不影響網站功能之類建議適當忽略此錯誤。

发表评论

注意: 请不要输入"https://"开头网址,否则会被防火墙自动拉黑。

評論 :

在〈宝塔面板Nginx如何启用fastcgi_cache缓存? WordPress提速〉中有 10 則留言

  1. 感謝教學!我按照流程做了一遍,發現開啟成功後,訪問首頁會自動跳到:/wp-admin/setup-config.php 顯示: 文件 wp-config.php 已經存在。如果您希望重設該檔案中的任何設定項目,請先刪除該檔案。您可以現在安裝。 但管理員已登入狀態下造訪首頁不會跳轉。

    1. wp-config.php檔案是否在根目錄(名字為網址的那個資料夾)?這個問題通常是你安裝wordpress時把系統檔案放錯位置導致。如果wp-config.php檔案位置正確,試試看清理緩存,停用所有外掛程式排查是否插件問題。

      1. 確認不是瀏覽器快取的事,而且我是新建站測試,所有插件關閉也是這個問題。我這邊剛測試了下,只要刪掉網站的設定檔中新增的關於fastcgi_cache快取的程式碼,首頁就立即可以存取;新增就會跳轉提示wp-config.php 已經存在。我英文也搜了很久,沒有找到答案。我快崩潰了…… 😭

        1. wp-config.php檔案是否在根目錄(名字為網址的那個資料夾)?先確定下。可能配置程式碼複製錯了?檢查下。

  2. 您好,按您設定成功後,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

    1. 您好,導致REST API出錯的原因有很多,不一定是因為 Fastcgi_cache快取。建議逐一停用外掛程式、切換到預設主題看下問題是否解決。如果確定是 Fastcgi_cache快取的問題請回覆此評論。
      很多時候REST API沒啥作用,如果不影響網站功能之類建議適當忽略此錯誤。

发表评论

注意: 请不要输入"https://"开头网址,否则会被防火墙自动拉黑。

免註冊快速登陸

輸入使用者名稱密碼登入

       
沒有帳號? 忘記密碼?