WordPress站点开启Nginx fastcgi_cache实现缓存加速(解决思路)

老蒋相信,我们有很多网友在使用WordPress程序遇到最大的问题就是随着网站数据的增加和时间的推移,网站的速度会越来越慢和臃肿。如果让我们的升级服务器的配置,在流量增加用户增加的前提下,我们可能还是会愿意升级的,但是如果我们网站流量没有增加,那让我们去花钱升级配置肯定心有不甘的。

关于WordPress进行优化性能和提速的办法有很多种。比如我们可以安装WordPress插件,常见的插件包括WP Fastest Cache、W3 Total Cache、cos-html-cache、Cachify、WP-Super-Cache、 WP-Rocket。但是这些插件在一定程度上是可以解决问题,但是还是需要在服务器和站点根目录中设置配置上解决。

今天老蒋需要分享的理论是利用Nginx fastcgi_cache缓存,我们可以直接使用Nginx为页面生成缓存来加速WP程序,而且还支持html伪静态页面,效率比使用PHP缓存插件要提速很多,即便是小配置的服务器也可以使用最大化利用的。当然,这个还是理论实现,老蒋今天先理论记录下方法,后面我打算找一个站点实战安装测试。

第一、安装Nginx ngx_cache_purge模块

像有一些WEB环境就自带安装过这个模块,有的没有安装需要我们自己安装。我们可以先检测下当前服务器环境是否有安装过。

nginx -V 2>&1 | grep -o ngx_cache_purg

如果显示 ngx_cache_purge 则已安装。

安装Nginx ngx_cache_purge模块

如果我们没有安装的,则需要自己编译安装,具体先查一下我们的WEB工具是否有快速小工具安装。

第二、配置Nginx开启fastcgi_cache缓存

这里我们再配置服务器站点的conf文件,比如我们需要找到当前站点的 www.itbulu.com.conf 配置文件。

fastcgi_cache_path  /home/cache/path levels=1:2 keys_zone=WORDPRESS:128m inactive=1d max_size=10g;
fastcgi_temp_path /home/cache/temp;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;

fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

server {
   listen 80;
   listen 443 ssl http2;
  …………………此部省略……………………
  
   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;
        }
	
   location ~ [^/]\.php(/|$) {
    #fastcgi_pass remote_php_ip:9000;
    fastcgi_pass unix:/dev/shm/php-cgi.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";
    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";
    fastcgi_cache WORDPRESS;
    fastcgi_cache_valid 200 301 302 1d;
  }
  
  #缓存清理配置(可选)
  location ~ /purge( /.*) { #为防止转义,请去掉{ /之间的空格
    allow 127.0.0.1;
    allow xxx.xxx.xxx.xxx;
    deny all;

    fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1";
    }
  …………………此部分省略……………………	

}

这里,根据我们的站点配置进行修改添加。

在上面的配置找中,缓存文件会存到fastcgi_cache_path和fastcgi_temp_path目录下比如:

/dev/shm/nginx-cache levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;

这里网友建议如果您的VPS或杜甫内存大可以存在内存中。

第三、清除nginx fastcgi_cache缓存的方法

这样,我们用上面的方法配置好了nginx fastcgi_cache缓存。我们还需要做一件事情就是要定期更新缓存,要不页面就固定静态,肯定不适合的。老蒋推荐使用WordPress程序的Nginx Helper插件,这个插件是wordpress的nginx fastcgi_cache缓存更新而开发的插件。

我们在安装插件默认定义的缓存路径是 /var/run/nginx-cache ,我们需要在WordPress 根目录下的 wp-config.php 中新增如下代码即可:

define( 'RT_WP_NGINX_HELPER_CACHE_PATH','/home/cache/path');

这里,我们需要先开启purge,然后选择nginx Fastcgin cahe。再次选择 Delete local server cache files。

总结,这里我们基本上梳理到WordPress Nginx fastcgi_cache实现缓存加速思路,后面老蒋单独用实战案例试试效果。

本文出处:老蒋部落 » WordPress站点开启Nginx fastcgi_cache实现缓存加速(解决思路) | 欢迎分享( 公众号:老蒋朋友圈 )

公众号 「老蒋朋友圈」获取站长新知 / 加QQ群 【1012423279】获取商家优惠推送