前言
WordPress是很流行的博客程序,很多站长使用它构建自己的站点。然而,如果不进行优化,WordPress的打开速度和并发能力会很差。本文汇总了常见的WordPress优化方法。下图是优化后的站点测速图(使用了CLOUDFLARE):
教程
PHP
一、设置你的PHP版本为8.3。经测试,WordPress运行在PHP 8.3性能最好。[1]
二、安装PHP扩展 opcache
。
WordPress
一、安装插件 WP Super Cache
。这个插件大多数站点都在使用,而且效果确实不错。
二、安装插件 Redis Object Cache
。这个插件需要你的服务器安装Redis后才可以使用。
三、安装插件 Nginx Helper
。这个插件需要配合Nginx的模块一起使用,详细教程在后文。
四、安装插件 WPJAM BASIC
。这个插件可以屏蔽所有 WordPress 不常用的功能。
Nginx
一、使用模块 ngx_cache_purge
。
如果你是宝塔用户,那么恭喜你,宝塔在安装Nginx时安装了该模块。具体可以通过以下代码查看安装情况:
nginx -V 2>&1 | grep -o ngx_cache_purge
如果正常输出了 ngx_cache_purge
,说明你的Nginx已经安装了该模块。
接下来,我们需要创建缓存文件夹。
# 将paolu_host替换为你的域名
mkdir -p /tmp/nginx-cache/paolu_host
chmod 755 /tmp/nginx-cache/paolu_host
# 如果你有多个域名,同上
创建缓存文件夹后,在Nginx配置文件的 server
块前加入以下代码:
# 将paolu_host和paolu.host改为你的域名
# levels不需要改动,它指定该缓存空间有两层hash目录,第一层目录为1个字母,第二层目录为2个字母
# keys_zone 来给这个缓存空间命名,一般使用域名,便于维护,冒号后指定了缓存空间的大小
# inactive 是缓存时间
# max_size 定义了缓存空间的最大值
fastcgi_cache_path /tmp/nginx-cache/paolu_host levels=1:2 keys_zone=paolu.host:100m inactive=1d max_size=5G;
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;
宝塔用户可以对照下面的图片配置:
接下来,在网站的配置文件处添加如下配置。
注意:
- sock路径需要修改,如果填错会导致网站502
- 缓存清理配置中,请将1.1.1.1修改为你的服务器IP
# 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;
}
# 这里请参考你网站之前的配置,特别是 sock 的路径,弄错了就 502 了!如果你的网站使用 PHP7.4,就写-74.sock
location ~ [^/]\.php(/|$)
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi-83.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 paolu.host;
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; # 只允许本站用 frame 来嵌套
add_header X-Content-Type-Options nosniff; # 禁止嗅探文件类型
add_header X-XSS-Protection "1; mode=block"; # XSS 保护
etag on;
fastcgi_cache_valid 200 301 302 1d;
}
# 缓存清理配置
location ~ /purge(/.*) {
allow 127.0.0.1;
allow "1.1.1.1"; # 引号要保留
deny all;
fastcgi_cache_purge paolu.host "$scheme$request_method$host$1";
}
宝塔用户可以参考下图配置:
配置完成后,访问你的网站。如果响应头有Nginx-Cache: HIT
,那么说明你的配置成功了,如下图所示:
如果你需要清理缓存,请使用上文中安装的插件 Nginx Helper
。
总结
如果配合CDN的缓存功能,可能会更快,但是作者还没分析到那么深入,过两天再发一篇文章吧。