Memcached加速WordPress需同时安装服务端和PHP扩展,并配置object-cache.php文件及站点盐值。仅装服务端无效;PHP扩展须选memcached非memcache;object-cache.php必须置于wp-content根目录;多站点需在wp-config.php中定义WP_CACHE_KEY_SALT以隔离缓存。

Memcached服务端和PHP扩展必须都装,缺一不可
只在宝塔「软件商店」点安装蓝色M图标那个 Memcached,网站不会加速——它只是服务端,WordPress根本连不上。你真正需要的是两样东西:服务端(memcached daemon)+ PHP通信桥梁(memcached 扩展)。很多人卡在这一步,后台测缓存一直显示“未连接”。
- 服务端安装路径:宝塔 → 「软件商店」→ 搜索
Memcached→ 点「安装」→ 安装完确认「服务状态」为运行中 - PHP扩展安装路径:进入「已安装」→ 找到你当前用的PHP版本(比如
PHP 8.2)→ 「设置」→ 「安装扩展」→ 勾选memcached(注意不是memcache,后者是旧版,不兼容) - 验证是否真装好:进该PHP版本的「phpinfo」页面,搜索
memcached,看到memcached support显示enabled才算通过
object-cache.php 必须放在 wp-content 目录下,不能放错位置
装完服务和扩展,WordPress还不会自动用Memcached——它需要一个叫 object-cache.php 的“开关文件”,而且这个文件的位置非常敏感:必须直接丢进 /wp-content/ 目录根目录,不是 /wp-content/plugins/,也不是 /wp-content/mu-plugins/。
- 推荐方式:装插件
memcached-is-your-friend,启用后它会自动生成object-cache.php,再用宝塔「文件」管理器把它从/wp-content/plugins/memcached-is-your-friend/复制到/wp-content/ - 手动方式:下载 WPJAM Basic 插件,从
/wp-content/plugins/wpjam-basic/template/object-cache.php复制出来,粘贴到/wp-content/ - 常见错误:复制完忘了禁用插件(如
memcached-is-your-friend),它会在停用时自动删掉object-cache.php;或者误传到/wp-content/plugins/下,完全无效
多站点共用Memcached必须加盐,否则缓存串台
如果你在一台服务器上跑了两个WordPress站点(比如 blog1.com 和 blog2.com),又都用了同一个Memcached服务,默认情况下它们会互相覆盖缓存——A站用户刷出B站的文章,后台数据错乱,原因就是缓存键没隔离。
- 根本解法是在每个站点的
wp-config.php文件里加一行:define('WP_CACHE_KEY_SALT', 'blog1_');(第二个站写'blog2_') - 别改数据库表前缀来“区分”,多数插件不认新前缀,容易崩;也别指望Memcached自己识别域名,它只认key,而WP默认key是不带站点标识的
- 加盐后,所有缓存键自动带上前缀,比如
blog1_options和blog2_options,彻底隔开
命中率低?先看 memcached 当前内存是否够用
装好了不代表效果好。宝塔面板里点开 Memcached 的「设置」→「负载状态」,重点盯 curr_items(当前缓存条目数)和 bytes(已用内存)。如果 bytes 接近你设的总内存上限(比如64M用了62M),说明缓存池快满了,老数据被频繁踢出,命中率自然掉。
- 调整方法:回到「Memcached 设置」→「性能调整」→ 把「最大内存」从默认64M调高到128M或256M(视服务器总内存而定,2G内存建议≤128M)
- 不要盲目调大:Memcached是纯内存服务,占太多会影响MySQL、PHP-FPM等其他进程;观察一周内
hit_rate(命中率)是否稳定在85%以上 - 命令行快速查状态:
echo "stats" | nc 127.0.0.1 11211,关注get_hits/cmd_get的比值
object-cache.php 放错目录、多个站没加盐,都会导致“看起来装好了,实际没生效”。










