详情
评论
问答

WordPress优化【Nginx缓存篇】

b7fdf80236010149

说到wordpress的缓存,大家想到的肯定是 WP-Super-Cache 的静态html缓存,以及 memcached 或 redis 动态缓存,插件的缓存效果肯定是有的,但是容易出现各种问题,比如配置很复杂、配置全英文、插件之间的冲突等,所以今天我要教大家一个更高级的缓存:Nginx fastcgi_cache缓存,直接在nginx层面缓存页面,还支持缓存伪静态!效果比起传统的php缓存好得太多了,因为很多人使用宝塔面板,所以今天的教程是基于宝塔面板的教程。

现在宝塔面板都默认编译了 Nginx ngx_cache_purge 模块,所以我们直接跳过安装方法。

查看Nginx模块

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

控制台显示如下:

图片[2]-WordPress优化【Nginx缓存篇】-柒小颜博客

Nginx配置

创建缓存目录

sudo mkdir -p /var/cache/nginx/fastcgi_cache
sudo chown -R www-data:www-data /var/cache/nginx/fastcgi_cache
sudo chmod -R 755 /var/cache/nginx/fastcgi_cache

全局设置

现在我们开始配置nginx,来到宝塔后台,在软件商店找到Nginx,点击设置按钮,在配置修改中添加以下内容:

fastcgi_cache_path /var/cache/nginx/fastcgi_cache levels=1:2 keys_zone=WORDPRESS:250m inactive=1d use_temp_path=off;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
#忽略一切 nocache 申明,避免不缓存伪静态等
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

加好之后截图如下:

图片[3]-WordPress优化【Nginx缓存篇】-柒小颜博客

网站设置

在宝塔后台的网站列表中,找到你的网站,并且点击设置按钮,将以下代码添加到配置文件中去:

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;
    }
    #这里请参考你网站之前的配置,特别是sock的路径,弄错了就502了!如果你的网站使用PHP7.4,就写-74.sock
    location ~ \.php$ {
        try_files $uri =404; 
        include fastcgi_params;
        fastcgi_pass unix:/tmp/php-cgi-82.sock; #修改成自己的PHP版本
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        # FastCGI 缓存设置
        fastcgi_cache_bypass $skip_cache;
        fastcgi_no_cache $skip_cache;
        fastcgi_cache WORDPRESS;
        fastcgi_cache_valid 200 301 302 30d;
        # 添加缓存头
        add_header X-FastCGI-Cache $upstream_cache_status;
    }
    #缓存清理配置
    location ~ /purge(/.*) {
        fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1";
    }

加好之后的截图如下:

图片[4]-WordPress优化【Nginx缓存篇】-柒小颜博客

个人推荐放在#SSL-END

添加好之后,重载Nginx设置,缓存就加好了。

WordPress清理缓存插件

后台搜索 Nginx Helper 插件安装启用,这个插件是为 wordpress fastcgi_cache缓存 打造的一个插件,十分的好用。

判断缓存状态

按 F12 开启开发者工具,访问你的网站,并检查响应头是否包含 X-FastCGI-Cache:

HIT 表示缓存命中。

MISS 表示未命中。

BYPASS 表示跳过缓存。

图片[5]-WordPress优化【Nginx缓存篇】-柒小颜博客

Nginx缓存清理失效

在WordPress配置文件中添加:

//根据实际情况定义缓存的存放路径
define( 'RT_WP_NGINX_HELPER_CACHE_PATH','/var/cache/nginx/fastcgi_cache');

不知道添加到第几行的话,可以添加到 define(‘WPLANG’, ‘zh_CN’); 的后面即可。添加后建议重载一下 php,确保变量生效。

PHP防跨站攻击设置

这个一定要关闭,否则在后台插件将无法清除缓存。

图片[6]-WordPress优化【Nginx缓存篇】-柒小颜博客

温馨提示: 本文最后更新于2025-05-28 19:00:12,某些文章具有时效性,若有错误或已失效,请在下方留言或联系柒小颜博客
©文章版权归作者所有
THE END
喜欢就支持一下吧
点赞12赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容