老蒋相信,我们有很多网友在使用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 则已安装。
如果我们没有安装的,则需要自己编译安装,具体先查一下我们的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实现缓存加速(解决思路) | 欢迎分享( 公众号:老蒋朋友圈 )