欢迎光临
我们一直在努力

WordPress优化方法大全

前言

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的缓存功能,可能会更快,但是作者还没分析到那么深入,过两天再发一篇文章吧。

[1]: WordPress 在 PHP 8 各版本中的性能测试 - 站长帮 (zhanzhangb.cn)

赞(5) 打赏
未经允许不得转载:跑路博客 » WordPress优化方法大全
本站由免费云加速(FreeCDN)提供网站加速和攻击防御服务