FastCGI_cache是Nginx的缓存模块,从Nginx层面启用静态网页,有效提高网站的并发量,减少PHP运行时间和请求响应时间,大幅提高页面加载速度。
fastcgi_cache 能够直接在 nginx 级别提供缓存内容,无需涉及 PHP 或 WordPress,加速结果比Wp Rocket还可以。相比之下,缓存插件仍然需要 PHP 在应用程序级别处理每个请求,从而消耗更多的 CPU。
该小组的一些成员表示,他们安装并比较了启用 fastcgi_cache 缓存的 Nginx 服务器,其速度比 Litespeed 服务器更快。然而,缓存插件仍然可以具有许多功能,例如能够对缓存内容进行基准测试和控制。
各种缓存的平均响应时间比较↓(越短越好)。
当然,前提是你的服务器本身有足够的性能,如果只有1H1G,再怎么优化也无法明显提升效果。现在大部分人建站都是使用宝塔面板,方便又省心。下面分享宝塔面板打开FastCGI_Cache缓存的方法。
注意:由于FastCGI_Cache会缓存PHP请求,因此可能会导致站点异常。例如,无效的阅读计数、缓存的评论者信息、缓存的登录屏幕等。需要添加额外的代码来解决此问题。新手不建议使用FastCGI_Cache缓存。启用 FastCGI_Cache 缓存需要使用专门的缓存插件,而不是像 Wp Rocket 这样的插件。
如何在 Nginx 中启用 fastcgi_cache 缓存
宝塔面板默认编译有Nginx ngx_cache_purge模块,所以不需要额外安装。
Global Settings
1 登录宝塔后台,在软件商店中找到Nginx,点击设置按钮,在“配置修改”中添加以下内容:
fastcgi_cache_path/tmp/wpcache levels=1:2keys_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;
# ignore all nocache declarations, avoid not caching pseudo-static, etc.fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
添加后的截图如下。
站点设置
在宝塔后台的网站列表中找到对应的网站,点击“设置”按钮,在配置文件中添加以下代码。代码应根据需要进行调整,在第43行输入Web服务器IP(外网)地址。
set$skip_cache 0;
#post accesses are not cached
if ($request_method = POST) {set$skip_cache 1;
}
# dynamic queries are not cached
if ($query_string ! = "") {set$skip_cache 1;
}
# backend and other specific pages are not cached (please add them for other requirements)
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-. *.php|/feed/|index.php|sitemap(_index)? .xml") {set$skip_cache 1;
}
# does not show cache for logged in users, users who have commented
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {set$skip_cache 1;
}
# here please refer to your site before the configuration, especially the path of the sock, get it wrong 502! If your site uses PHP7.4, write -74.socklocation~ [^/]\.php(/|$)
{try_files$uri =404;fastcgi_pass unix:/tmp/php-cgi-74.sock;fastcgi_index index.php;
includefastcgi.conf;add_header Strict-Transport-Security"max-age=63072000; includeSubdomains; preload";
# new cache rulesfastcgi_cache_bypass$skip_cache;fastcgi_no_cache$skip_cache;add_header X-Cache"$upstream_cache_status From $host";fastcgi_cacheWORDPRESS;add_header Cache-Control max-age=0;add_header Nginx-Cache"$upstream_cache_status";add_header Last-Modified$date_gmt;add_header X-Frame-OptionsSAMEORIGIN; # allow only frames to be nested on this siteadd_header X-Content-Type-Options nosniff; # disable sniffing of file typesadd_header X-XSS-Protection"1; mode=block"; # XSS protectionetag on;fastcgi_cache_valid200 301 302 1d;
}
# cache cleanup configurationlocation~ /purge(/. *) {allow127.0.0.1;allow"server extranet IP"; # quotes to be keptdeny all;fastcgi_cache_purgeWORDPRESS "$scheme$request_method$host$1";
}
添加后的截图如下。
添加完后保存,重启Nginx,缓存就添加完成了。
安装 WordPress 清理缓存插件
FastCGI_Cache无法及时准确地自动清理站点缓存,因此需要安装配套的缓存插件来自动控制刷新缓存。后端搜索,安装Nginx Helper插件,这个插件是专门为fastcgi_cache缓存而构建的。