在使用WordPress建站过程中,我曾经在优化其性能、提高网站访问速度方面走了不少弯路。一旦网站开始出现访问缓慢、CPU内存消耗过大等情况,我的第一反应是升级服务器配置。但是,随着经验的积累,我逐渐意识到,服务器配置的提升虽然能够缓解问题,但服务器费用不断增加有点承受不了。
因此,我开始寻找其他方法来优化WordPress性能和加快网站访问速度。其中一些有效的方法包括:使用高效的WordPress主题和插件、压缩和优化图像、使用缓存和CDN服务等。通过采用这些方法,我的网站的性能和速度得到了极大的提升,同时还避免了不必要的成本开销。
页面缓存插件比如W3 Total Cache、WP Super Cache等都是经过NGINX -> PHP -> WP缓存插件 -> 本地或对象缓存这样一种流程,这些都是在PHP层面优化,比起静态化,性能还是不足.
而fastcgi缓存则直接使用NGINX——fastcgi缓存,提高了效率。于是我用Nginx Microcaching微缓存赋能,网站速度快性能强,不过如果访问量再大点,如果没有交互内容,把Nginx fastcgi_cache缓存时间延长些也能有效提升网站性能,直接使用Nginx为页面生成缓存,效率比使用PHP缓存插件要高得多,特别适合小配置的VPS上使用。
Nginx的fastcgi cache是用来缓存用户请求,当用户下次再进行同样的访问的时候直接将缓存结果返回给用户,避免了nginx再向上游请求结果的过程,使服务性能大幅度提升,如果服务是静态可缓存的话使用这个模块能够明显缩短用户请求时间同时节省服务器资源,大大提升服务的qps。
基于宝塔面板(aapanel)设置
宝塔默认的配置文件里面有:
#AAPANEL_FASTCGI_CONF_BEGINfastcgi_cache_key "$scheme$request_method$host$request_uri";fastcgi_cache_path /dev/shm/nginx-cache/wp levels=1:2 keys_zone=WORDPRESS:100m inactive=60m max_size=1g;fastcgi_cache_use_stale error timeout invalid_header http_500;fastcgi_ignore_headers Cache-Control Expires Set-Cookie;#AAPANEL_FASTCGI_CONF_END
并且通过df -h
查看服务器磁盘挂载情况发现tmpfs 2.0G 712K 2.0G 1% /dev/shm
,还是一个高速内存的缓存盘!
站点设置
在站点配置文件中找到:
#PHP-INFO-START PHP reference configuration, allowed to be commented, deleted or modifiedinclude enable-php-74.conf; #根据你的PHP版本有所不同#PHP-INFO-END
改成:
#PHP-INFO-START PHP reference configuration, allowed to be commented, deleted or modifiedinclude enable-php-74-wpfastcgi.conf;#PHP-INFO-END
接着编辑配置文件:
nano /www/server/nginx/conf/enable-php-74-wpfastcgi.conf#找到下面这一段location ~ /purge(/.*) { allow 127.0.0.1; allow yourip; #换成你的公网ip deny all; fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1";}
重启nginx,
用无痕浏览打开你的网站,然后F12打开开发者工具,
找到:x-cache: Hit From xxxxx
第一次打开可能是MISS,再刷新一次看到HIT from your.domain就是成功!
配置自动缓存刷新
安装Nginx Helper:
配置:
保存即可。
如果想要设置定时刷新,可以使用crontab:
find /dev/shm/nginx-cache/wp -type f -delete
非宝塔配置
其实很简单,nginx主配置文件加入:
fastcgi_cache_key "$scheme$request_method$host$request_uri";fastcgi_cache_path /dev/shm/nginx-cache/wp levels=1:2 keys_zone=WORDPRESS:100m inactive=60m max_size=1g;fastcgi_cache_use_stale error timeout invalid_header http_500;fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
站点配置文件加入:
set $skip_cache 0;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(/|$) { 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; 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 your ip; #记得改成你的公网ip deny all; fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1";}
重启nginx即可使用。
效果如下:
总之,在优化WordPress性能和加快网站访问速度时,需要探索不同的解决方案,并根据实际情况来选择最适合自己的方法。