:root{--puock-block-not-tran:100%}

在Docker中WordPress使用Redis缓存(Redis Object Cache插件)

707次阅读
没有评论

共计 3074 个字符,预计需要花费 8 分钟才能阅读完成。

前言

不得不说 WordPress 站点的响应速度是比较缓慢的, 在后台编辑以及前台打开的时候可以感觉到比较明显的加载延迟. 查看主题代码也能够发现在Wordpress中一个页面的加载往往要进行好几次甚至几十次数据库的访问. 所以才诞生了其他的博客框架. 但Wordpres确实是众多博客网站中主题插件最为全面,使用文档最多的. 或许无法从源码的角度进行修改, 但有redis这种神器的存在,可以在数据库与应用之间搭建一个缓存层, 加快固定速度的加载. 当然此处得吐槽一下PHP为何都2023年了一个页面加载还要从数据库往返数据几十次!

介绍

Redis Object Cache插件 插件页面 仓库链接

由Redis提供支持的持久对象缓存后端。 支持 Predis 、 PhpRedis(PECL) 、Relay、replication、sentinels、clustering 和WP-CLI。

  • 针对原始性能重写
  • 100% WordPress API兼容
  • 加快序列化和压缩
  • 易于调试的&日志记录
  • 缓存预取和分析
  • 完全单元测试(100%代码覆盖率)
  • 使用TLS实现安全连接
  • 通过WordPress WP CLI进行健康检查&
  • 针对WooCommerce,Jetpack&Yoast SEO优化

安装配置解析

本文主要介绍当 WordPress 部署在Docker中时 Redis Object Cache 如何配置连接参数.

  1. 在 WordPress 插件安装界面自行搜索 Redis Object Cache 并安装插件并启用.如图 在Docker中Wordpress使用Redis缓存(Redis Object Cache插件)

  2. 启用后在 WordPress 的设置中可以找到一个Redis的标签如图 在Docker中Wordpress使用Redis缓存(Redis Object Cache插件)

  3. 刚安装时Redis信息应该是未连接状态 参考Github 上插件的配置文档 需要在映射的 /var/www/html/wp-config.php 源代码中进行配置以下是配置文档中相关参数解析.

// Redis 连接访问的主机 127.0.0.1
define( 'WP_REDIS_HOST', '127.0.0.1' );
// Redis 连接访问的端口 6379
define( 'WP_REDIS_PORT', 6379 );
// 定义存储数据的 Redis 库index 范围 0-15 配置0
define( 'WP_REDIS_DATABASE', 0 );
// Redis 连接密码 123456
define( 'WP_REDIS_PASSWORD', '123456' );
// 更改每个站点的前缀和数据库以避免缓存数据冲突 my-moms-site
define( 'WP_REDIS_PREFIX', 'my-moms-site' );
// 连接超时单位秒 1秒
define( 'WP_REDIS_TIMEOUT', 1 );
// 读取超时单位秒 1秒
define( 'WP_REDIS_READ_TIMEOUT', 1 );

// 以上参数自行配置为你所使用的Redis连接所使用的参数.

// 编辑 wp-config.php 文件时,重要的是在文件的较高位置定义 WP_REDIS_* 常量,即这些行之上: 必须在 wp-config.php 文件中这一行代码之前添加
require_once(ABSPATH . 'wp-settings.php');

Dokcer中配置

在 WordPress Docker 版本中的配置方式略有不同. 主机安装中如果没有原本没有 Redis 实例还需要额外去安装Redis. 在Docker中我们可以拉取Redis的镜像即刻部署一个Redis.. WordPress Docker 安装配置过程可以参考我这篇文章 使用Docker Caddy Nginx部署WordPress博客, 首先我们修改映射的 /var/www/html/wp-config.php 文件. 在这段 require_once ABSPATH . 'wp-settings.php'; 代码的上方加入以下代码.

define( 'WP_REDIS_HOST', getenv_docker('WP_REDIS_HOST', 'reids') );
define( 'WP_REDIS_PORT', getenv_docker('WP_REDIS_PORT', 6379) );
define( 'WP_REDIS_DATABASE', getenv_docker('WP_REDIS_DATABASE', 0) );
define( 'WP_REDIS_PASSWORD', getenv_docker('WP_REDIS_PASSWORD', null) );
define( 'WP_REDIS_PREFIX', getenv_docker('WP_REDIS_PREFIX', null) );
define( 'WP_REDIS_TIMEOUT', getenv_docker('WP_REDIS_TIMEOUT', 1) );
define( 'WP_REDIS_READ_TIMEOUT', getenv_docker('WP_REDIS_READ_TIMEOUT', 1) );

其中 getenv_docker 函数是 WordPress Docker 版本特有的函数 用来获取容器的环境变量配置, 上面的代码配置了 WP_REDIS 所需的所有参数从 环境变量中读取, 不存在的使用默认值. 接下来在 docker-compose.yml 文件中使用环境变量配置Redis, 以下代码包含 Redis 安装. 与Reids无关的参数我将会用 #... 省略.

version: '2.4'

services:
    # ...
    redis:
        image: redis:alpine
        container_name: server_redis
        restart: always
        command: --requirepass "{你的Redis密码}"
        ports:
            - '6379:6379'
        volumes:
            - ./data/redis/data:/data
    # ...
    wordpress:
        image: wordpress:fpm-alpine
        container_name: server_wordpress
        restart: always
        environment:
            TZ: Asia/Shanghai
            # ...
            WP_REDIS_HOST: redis
            WP_REDIS_PORT: 6379
            WP_REDIS_DATABASE: 11 # 指定一个空闲的库
            WP_REDIS_PASSWORD: {你的Redis密码}
        volumes:
        - ./etc/wordpress/my.ini:/usr/local/etc/php/conf.d//my.ini
        - ./data/wordpress/html:/var/www/html

执行 docker compose up -d 命令自动拉取部署 redis 实例, 并且自动重启 wordpress 应用因为我们更改了 wordpress 的参数, 如果配置没有生效也可以手动重启 wordpress 使用命令 docker compose restart wordpress

然后 再到 WordPress 后台界面中 Redis信息应该是绿色已连接状态. 点击按钮启用对象存储. 我们整个网站就接入了缓存啦, Redis Object Cache 插件会拦截大多数 WordPress 页面加载时的数据库读取请求缓存在Redis中. 日常使用会感觉页面加载速度快了许多or一些. 有时会出现修改了菜单或者Wordpress的某项配置没有即时生效的情况, 这时只需要点击左上角的对象缓存>刷新缓存刷新一下就好如图. 在Docker中Wordpress使用Redis缓存(Redis Object Cache插件)

总结

Redis Object Cache这款插件在安装后还是可以很明显的感觉到页面加载速度的提升的, 在网站访问量大的时候也可以部署多节点分布式缓存. redis 搭配 docker 目前感觉还不错~

正文完
 3
太阳
版权声明:本站原创文章,由 太阳 于2023-10-17发表,共计3074字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)