在WordPress网站的优化中,缓存是一个关键因素。虽然有很多插件可用于缓存,但它们往往带来配置复杂、语言不友好和插件冲突等问题。有没有更简单高效的方法呢?答案是:Nginx fastcgi_cache缓存。它直接在Nginx服务器层面缓存页面,包括伪静态页面,使网站速度大幅提升,同时避免了插件相关的问题。
技术无法解决的问题,用硬件来解决;硬件不足时,依靠技术。投入更多,问题减半。
如果你使用宝塔面板,以下教程将教你如何配置Nginx fastcgi_cache缓存。
Nginx缓存配置
首先,登录宝塔面板,在软件商店中找到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;
网站配置文件调整
接着,在宝塔后台的网站列表中找到需要配置的网站,点击“设置”按钮,并将以下代码添加到该网站的Nginx配置文件中。
根据需要调整第26行php版本,第48行的服务器外网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;
}
# PHP配置
location ~ [^/]\.php(/|$) {
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi-74.sock;
fastcgi_index index.php;
include fastcgi.conf;
# 缓存配置
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;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
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设置即可启用缓存。
安装Nginx Helper插件
在WordPress后台搜索并安装Nginx Helper插件。此插件专为WordPress的fastcgi_cache缓存设计,非常便捷。
验证缓存状态
按F12开启浏览器开发者工具,未登录情况下访问网站首页,检查响应头信息。出现HIT表示已缓存,BYPASS表示设置原因未缓存,MISS表示页面尚未缓存(首次访问新页面时出现)。
为多个网站配置Nginx fastcgi_cache缓存
如果在同一服务器上有多个网站需要配置缓存,需在Nginx配置文件中为每个网站设置不同的fastcgi_cache_path路径和keys_zone名称。例如,为第二个网站设置如下:
fastcgi_cache_path /tmp/wpcache2 levels=1:2 keys_zone=WORDPRESSA:250m inactive=1d max_size=1G;
然后,复制第一个网站的缓存配置,将第34和50行的名称改为WORDPRESSA,并应用到第二个网站的配置中。
解决Nginx Helper插件清理缓存无效问题
找到插件目录下的nginx-helper/includes/class-nginx-helper.php,将其中的/var/run/nginx-cache路径修改为/tmp/wpcache。在WordPress根目录的wp-config.php文件中新增如下代码:
// 根据实际情况定义缓存的存放路径
define('RT_WP_NGINX_HELPER_CACHE_PATH', '/tmp/wpcache');
通过上述配置,你可以在宝塔面板中高效地启用Nginx的fastcgi_cache缓存,从而显著提升WordPress网站的性能。
请登录后查看评论内容