博客 / WordPress/ WordPress 性能优化指南:如何正确配置 Memcached 与 OPcache

WordPress 性能优化指南:如何正确配置 Memcached 与 OPcache

WordPress 性能优化指南:如何正确配置 Memcached 与 OPcache

WordPress 缓存方案:Memcached 与 OPcache 的协同使用

在 WordPress 性能优化中,不同类型的缓存服务扮演着不同的角色,它们可以协同工作以提升网站速度。

  • Memcached / Redis:主要用于数据库查询结果和对象缓存。如果你的网站数据库查询量大、并发高,建议安装此类缓存服务来减轻数据库负载。
  • OPcache (Zend OPcache) / APCu:主要用于 PHP 代码的优化和缓存。它们通过将编译后的 PHP 字节码存储在内存中,避免每次请求都重新编译脚本,从而显著提升 PHP 执行效率。通常只需选择并启用其中一种即可。

因此,WordPress 完全可以同时使用 Memcached(用于对象缓存)和 OPcache(用于 PHP 代码缓存),它们作用于不同的层面,互不冲突,共同提升性能。

常见问题:安装 Memcached 后页面空白

使用 LNMP 一键安装包安装 php-memcached 扩展,并上传 object-cache.php 文件到 wp-content 目录后,刷新主页出现空白页面。

原因与解决方案:

这通常是因为 WordPress 官方推荐的 Memcache 客户端插件与 PHP 扩展不匹配所致。

  • php-memcache 扩展:对应较老的、但 WordPress 插件广泛支持的 “Memcache” 库。
  • php-memcached 扩展:对应功能更丰富的 “Memcached” 库(带“d”),但部分 WordPress 缓存插件可能不完全兼容。

如果出现页面空白,请尝试安装 php-memcache 扩展(而非 php-memcached)。对于 LNMP 一键安装包,可以执行以下操作:

cd /path/to/lnmp-install-directory
./addons.sh

在出现的菜单中选择安装 php-memcache

为 WordPress 配置 Memcache 对象缓存

1. 安装必要的 PHP 扩展:确保服务器已安装 php-memcachephp-memcached 扩展,并已启动 Memcached 服务。

2. 获取 WordPress 对象缓存插件文件:你需要一个 object-cache.php 文件。可以从以下地址下载(文件已更新为当前可用版本):

  • 官方 WordPress 插件目录搜索 “Memcached Redux” 或 “Memcached Object Cache”。
  • 或使用经过社区维护的版本,例如从 GitHub 获取:https://github.com/websharks/wp-memcached

3. 部署文件:将下载的 object-cache.php 文件上传到 WordPress 站点的 wp-content 目录(不是 wp-content/plugins/)。

Memcached 服务管理与状态检查

1. 检查 Telnet 与连接 Memcached

首先检查系统是否安装了 Telnet 客户端(用于连接测试):

# CentOS/RHEL
yum install -y telnet

# Debian/Ubuntu
apt-get install -y telnet

使用 Telnet 连接 Memcached 服务(默认端口 11211):

telnet 127.0.0.1 11211

连接成功后,会显示:

Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

2. 查看 Memcached 状态

在 Telnet 连接中,输入 stats 命令查看详细状态:

stats

关键指标说明:

  • cmd_get:总获取次数。
  • get_hits:缓存命中次数。命中率 = get_hits / cmd_get,此值越高说明缓存效果越好。
  • get_misses:缓存未命中次数。
  • cmd_set:总设置(存储)次数。
  • limit_maxbytes:Memcached 分配的最大内存(字节)。
  • bytes:当前已使用内存(字节)。
  • curr_items:当前存储的缓存项数量。

3. 清空缓存与重启服务

  • 清空所有缓存数据(谨慎操作):在 Telnet 中执行 flush_all
  • 停止服务:找到 Memcached 进程 ID(例如通过 ps aux | grep memcached),使用 kill [PID] 命令。
  • 启动/重启服务:通常可以通过系统服务命令操作:
    # Systemd 系统
    systemctl restart memcached
    
    # SysVinit 系统
    service memcached restart

4. 调整 Memcached 启动参数

如果需要修改运行参数(如内存大小),需编辑启动配置。对于 Systemd,编辑 /etc/systemd/system/memcached.service.d/override.conf 或类似文件。常见的参数示例:

/usr/bin/memcached -d -m 128 -l 127.0.0.1 -p 11211 -c 2048 -u memcache -P /var/run/memcached/memcached.pid

参数说明:

  • -m 128:分配最大 128MB 内存。
  • -l 127.0.0.1:监听本地回环地址(出于安全考虑,生产环境应谨慎配置监听 IP)。
  • -p 11211:监听端口。
  • -c 2048:最大并发连接数。
  • -u memcache:指定运行用户(建议使用非 root 用户,如 memcache)。

重要安全提示:默认配置可能监听在所有接口(0.0.0.0)上,这存在安全风险。请确保通过防火墙或配置 -l 127.0.0.1 限制访问来源。

  1. 老牛,我在本地电脑上搭建了一个wordpress网站,但是速度并不是很快,怎么回事,是谷歌字体的问题?我用了下面这段代码,但是并没有感觉本地网站很快?

    //禁止调用google字体(google被墙导致速度很慢)
    function remove_open_sans() {
    wp_deregister_style( ‘open-sans’ );
    wp_register_style( ‘open-sans’, false );
    wp_enqueue_style(‘open-sans’, ”);
    }
    add_action( ‘init’, ‘remove_open_sans’ );

    1. 你换个主题试试,有时候是主题本身的问题

      1. 嗯嗯,好的

      2. 老牛,能不能推荐一些学习网站技术的地方,现在自己摸索建站,学的东西乱七八糟的

        1. 你百度搜索w3cschool 这个上面都是基础知识,很有用

          1. 谢谢

回复 小李 取消回复

您的邮箱不会公开。必填项已用 * 标注。