WordPress 性能优化-Redis篇

597次阅读
没有评论

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

背景

WordPress 的最小化安装有三种组件:

  • WordPress
  • MySQL
  • PHP

外围的有组件主要有:

  • cache,例如 redis & memcache 等
  • web 服务,例如 nginx & caddy & apache 等

相比于hugo,hexo 等纯静态建站方案,wordpress 的 php + mysql 显得比较重,性能方面也自然不如。

但是我家中有台高配服务器,更追求的是可拓展性和生态的完善程度。

不过性能问题也不是不能解,这篇文章主要会介绍如何使用 redis 提升网站的访问速度。

Redis 能够做什么?

其实接触 redis 已经很久,公司的生产环境业务,访问量大点儿都会用 redis 来作缓存。

在 wordpress 中使用 redis ,主要可以缓存以下几类数据:

  • MySQL相关:数据库中会存储文章、页面、评论、用户信息等数据,这些数据可以预先缓存在 redis 中,降低数据库的查询。
  • PHP相关:当一些查询结果和数据被缓存到 redis 中时,wordpress 可以通过直接从Redis获取数据而跳过执行对应的PHP代码。

实操

redis 部署

本站是使用 docker-compose 进行部署的,所以 redis 也同样以容器的方式部署。它们会位于同一网络下。

在使用 redis 前,docker-compose.yml 只管理了 wordpress 和 mysql,配置如下:

# 查看目录结构
[root@ ubuntu-family /usr/local/wordpress]
22:05:18 # ls -la
total 24
drwxr-xr-x  3 root root 4096 Sep  5 22:05 .
drwxr-xr-x 17 root root 4096 Sep  3 15:50 ..
-rw-r--r--  1 root root  889 Sep  5 20:01 docker-compose.yml
drwxr-xr-x  4 root root 4096 Aug 24 12:02 volumes

# 查看配置内容
22:03:18 # cat docker-compose.yml
version: '3'
services:
  db:
    image: mysql:5.7
    volumes:
      - ./volumes/database:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: your_mysql_root_password
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: your_mysql_password

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    ports:
      - 8000:80
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: your_mysql_password
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - ./volumes/html:/var/www/html

如果需要加上 redis,不仅仅需要安装redis,还需要额外给 php 增加 redis 拓展。而 php 是在 wordpress 的镜像中管理的。

所以我们需要使用 Dockerfile 定制一个新的镜像。

# 备份原docker-compose.yml
mv docker-compose.yml docker-compose.yml-noredis

# 编辑Dockerfile
# vim Dockerfile
FROM wordpress:latest

RUN set -eux; \
    apt-get update; \
    apt-get install -y --no-install-recommends \
        git \
        unzip \
        libzip-dev \
    ; \
    pecl install redis; \
    docker-php-ext-enable redis; \
    rm -rf /tmp/pear; \
    apt-get clean; \
    rm -rf /var/lib/apt/lists/*

# 创建新docker-compose.yml
# vim docker-compose.yml
version: '3'
services:
  db:
    image: mysql:5.7
    volumes:
      - ./volumes/database:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: your_mysql_root_password
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: your_mysql_password

  wordpress:
    depends_on:
      - db
      - redis
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - 8000:80
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: your_mysql_password
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - ./volumes/html:/var/www/html

  redis:
    image: redis:latest
    restart: always

# 重启服务
docker-compose restart

到这里,服务端的配置已经完成:

  • 安装 redis
  • 安装并启用 PHP redis 拓展

配置使用 redis

服务端的配置完毕后,还需要在站点中使用插件,以使用 redis 作为缓存。

进入管理后台,点击 插件​ –> 安装插件​ –> 搜索 Redis Object Cache​ –> 安装 –>启用,如图:

WordPress 性能优化-Redis篇

插件配置如图:

点击 设置​ –> Redis​ –> Enable Object Cache

WordPress 性能优化-Redis篇

完毕后如下图:

WordPress 性能优化-Redis篇

至此所有配置已经结束。

效果

未使用 redis 的页脚性能统计:
WordPress 性能优化-Redis篇

​​

使用 redis 后的页脚性能统计:
WordPress 性能优化-Redis篇

​​

  • 使用前
    • 加载耗时:0.155s
    • 数据库查询次数:55次
  • 使用后
    • 加载耗时:0.066s
    • 数据库查询次数:8次

关于 页脚展示性能统计数据,可以参考站内文章:wordpress 页面加载性能数据

结论

其实现在网站的访问量并不大,加速效果并不会很明显。但是当负载上来后,缓存是一个很重要的处理层,对于性能提升很有帮助。

同时对于 wordpress 站点,性能优化的方式还有很多,例如使用 cdn 缓存静态资源,压缩图片资源,CSS优化 等。 日后有需要再进行深究。

关于 使用 cdn 缓存静态资源,可粗略参考站内文章:家宽建站的几种方式方案3 CDN​。

引用链接

正文完
 
pengyinwei
版权声明:本站原创文章,由 pengyinwei 2023-09-05发表,共计2811字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处:https://www.opshub.cn
评论(没有评论)