网上看了好几篇文章,都过时了,尝试以后无法正确在WordPress使用Memcached。这里记录一下2024年该如何正确安装(宝塔)Memcached给WordPress使用。
基本概念
虽然安装的是Memcached,但其实Memcached有好几个概念,其他文章都没有讲清楚,本文先叙述清楚有关Memcached的概念,这样才好理解安装的所有东西到底是什么,为什么安装。
Memcache PHP扩展
首先Memcached和Memcache是两个东西。
Memcache(官网http://pecl.php.net/package/memcache)是PHP的一个扩展包(package),在PHP层面把页面缓存到内存实现网页加速。已经不再维护和更新了,所以不需要了解更多。如果网页说的是Memcache那文章已经过时了不用看了。
Memcached 软件
Memcached (官网https://github.com/memcached/memcached)是一个高性能多线程、基于事件的键/值缓存存储,旨在用于分布式系统。
是在服务器软件层面把数据缓存到内存实现加速。很明显可以比Memcache性能高非常多。
Memcached PHP扩展
同Memcache一样,也是PHP的一个扩展包,名字也叫Memcached(官网http://pecl.php.net/package/memcached)。作用是通过 libmemcached 库与 memcached 软件连接。
不过这个扩展和Memcache扩展不一样,通俗理解这就是一个可以让PHP代码通过此扩展连接到Memcached 软件的桥梁,自己本身不提供缓存加速功能。
安装Memcached软件
分清楚了概念,才知道该安装哪些软件。
宝塔安装
通过宝塔安装Memcached很简单,在宝塔软件商店 - 运行环境里找Memcached,直接安装就行。
手动安装
手动安装没试过,官网介绍只需要输入命令:
1 2 | apt install memcached # debian系 yum install memcached # redhat系 |
安装Memcached PHP扩展
宝塔安装
宝塔面板 - 软件商店 - PHP行点设置,“安装扩展”里找到Memcached并安装。
手动安装
没试过,大概流程就是下载PHP扩展,复制到PHP目录,php.ini里开启扩展。
WordPress安装Memcached插件
安装好Memcached软件和Memcached PHP扩展后,最后一步是安装WordPress Memcached插件。
WordPress Memcached插件又有好几个,博主都试了一下,有的已经不能用了。比如:
Memcached Object Cache插件(https://wordpress.org/plugins/memcached/):装上以后WordPress直接致命性错误。因为这插件还需要Memcache。
安装Object Cache 4 everyone插件
WordPress商店里搜索安装。
这个插件的功能类似于Memcached Object Cache,给WordPress添加Memcached对象缓存支持。修改版可以自动检测 PECL Memecache 或 PECL Memcached(首选 Memcached)类并使用适当的接口。
安装batcache插件
下载地址:https://github.com/Automattic/batcache
下载后解压缩,只需要上传advanced-cache.php
文件到/wp-content
目录即可,无需安装插件。
这个插件的功能是将WordPress页面内容提交给memcached-is-your-friend修改版插件,然后就可以生成内存缓存了。
修改wp-config.php,插入行define('WP_CACHE', true);
安装完成。
检查是否安装成功
以访客打开博客,查看页面源代码,源代码最下面如果有类似served from batcache
如图注释则成功。
查看Memcached统计
WordPress里查看
WordPress后台 - 工具 - Memcached里,可以查看统计数据。
1 2 3 4 5 6 7 | STAT cmd_get 16522 总共获取数据的次数(等于 get_hits + get_misses ) STAT cmd_set 1484 总共设置数据的次数 STAT get_hits 15038 命中数据次数(从 Memcached 缓存中成功获取数据的次数) STAT get_misses 1484 没有命中的次数 STAT limit_maxbytes 67108864 总的存储大小,默认为 64M STAT bytes 524288 当前所用存储大小 以上数据命中次数:15038/16522=91.0% 因为刚开启,命中率在慢慢提升。 |
宝塔面板里查看
软件商店 - Memcached - 设置里,负载状态可以查看统计数据。
修改Memcached缓存时间
advanced-cache.php有一些自定义的选项可供配置:
1 2 3 4 | var $max_age =3600; // 缓存过期时间(以秒为单位) var $remote = 0; // Zero disables sending buffers to remote datacenters (req/sec is never sent) var $times = 2; // 访问多少次才创建缓存(2是最小值) var $seconds = 0; // 多少秒之后才创建缓存(0表示立即) |
Memcached配合WP super cache插件
WordPress使用Memcached的比较好的方案是用Batcache插件来实现,然而那些网上Memcached与WP Super Cache共用的教材早已经过时,至少目前WP Super Cache早就不支持Memcached的了,你可能一直才在错用。
官方不推荐
Q:
Hello!
wp-super-cache is the best cache plugin.
Do U plan to add memcached support to store cached pages in memcached?
I think it's nice feature to speed up website additionally.
A:
The plugin used to have very rudimentary support for using wp-cache-get/set, or memcached to store cached content but it was very very rough and never worked on. It was removed recently and nobody noticed.
Batcache is a much better choice if you want to use a memcached full page cache.
这是来自WP Super Cache官方的回答:https://github.com/Automattic/wp-super-cache/issues/706,还有一篇:https://wordpress.org/support/topic/wp-super-cache-and-memory-caching/
按照官方的说法:WP Super Cache以前支持,但是由于一直没有正常工作过,于是很早就删除了这个功能。所以推荐Batcache来做object cache。
参考文章
《宝塔面板安装memcached并在WP使用batcache》
文章评论
可以试试这个插件:MemcacheD Is Your Friend。。。
@Lvtu MemcacheD Is Your Friend这个插件我也试了,配合W3 Total Cache插件很好用。我装的WP Super Cache插件好像不兼容MemcacheD Is Your Friend插件,所以选的batcache插件。batcache插件和MemcacheD Is Your Friend插件功能都差不多,都是搭建给PHP和memcached软件搭建数据桥梁。